一个快算36的小游戏

-- 快算36 SQL小游戏
-- 功能:随机生成4个数字,支持运算表达式验证、判题
DELIMITER // -- 修改语句结束符,方便编写存储过程

-- 1. 创建出题存储过程(生成4个1-13随机数)
DROP PROCEDURE IF EXISTS proc_generate_36;
CREATE PROCEDURE proc_generate_36()
BEGIN
    -- 生成4个不重复随机数(1-13)
    SET @num1 = FLOOR(1 + (RAND() * 13));
    SET @num2 = FLOOR(1 + (RAND() * 13));
    SET @num3 = FLOOR(1 + (RAND() * 13));
    SET @num4 = FLOOR(1 + (RAND() * 13));
    
    -- 输出题目
    SELECT '快算36题目' AS game_title,
           @num1 AS 数字1,
           @num2 AS 数字2,
           @num3 AS 数字3,
           @num4 AS 数字4,
           '规则:用+ - * / 和括号,4个数字各用1次,算出结果=36' AS rules;
END //

-- 2. 创建判题存储过程(验证运算表达式是否正确)
DROP PROCEDURE IF EXISTS proc_check_36;
CREATE PROCEDURE proc_check_36(IN expression VARCHAR(100))
BEGIN
    DECLARE result DECIMAL(10,2);
    DECLARE error_msg VARCHAR(100);
    
    -- 异常处理:避免表达式语法错误
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        SELECT '❌ 表达式语法错误!请检查运算符号/括号' AS 判题结果;
    END;
    
    -- 执行用户输入的运算表达式
    SET @sql = CONCAT('SELECT ', expression, ' INTO @calc_result');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    
    -- 判题逻辑
    IF @calc_result = 36 THEN
        SELECT '✅ 恭喜你!答对了,结果=36' AS 判题结果,
               @calc_result AS 你的计算结果,
               expression AS 你的表达式;
    ELSE
        SELECT '❌ 答错了,结果不等于36' AS 判题结果,
               @calc_result AS 你的计算结果,
               '再试试吧!' AS tips;
    END IF;
END //

DELIMITER ; -- 恢复默认结束符

-- ====================== 游戏开始 ======================
-- 第一步:调用出题(运行这一行生成题目)
CALL proc_generate_36();

-- 第二步:调用判题(替换括号内为你的运算表达式,运行这一行)
-- 示例:CALL proc_check_36('(6+3)*4*1');
CALL proc_check_36('这里填写你的运算表达式');

SQL 实现「快算 36」趣味终端小游戏

一、游戏介绍

这是一个基于 SQL 存储过程实现的轻量交互小游戏,通过随机出题、自动判题的方式,让你在写 SQL 的同时,锻炼心算和逻辑能力。游戏中,系统会随机给出 4 个数字,你需要用 + - * / 和括号,让这 4 个数字各用一次,算出结果等于 36,过程全程在数据库中完成,体验一把 “用 SQL 玩心算游戏” 的乐趣。

游戏特点:

  • 零额外依赖:仅需 MySQL 数据库即可运行
  • 一键出题判题:调用存储过程就能生成题目、自动批改
  • 友好错误提示:语法错误、数字使用不规范都会给出明确反馈
  • 可扩展空间大:后续可轻松扩展难度、排行榜、答案库等功能

二、核心实现原理

本项目完全基于 MySQL 存储过程实现,核心用到了以下几个关键特性:


六、总结

这个「快算 36」小游戏,展示了 SQL 在终端交互应用开发方面的趣味性和可能性。通过合理运用存储过程、会话变量、动态 SQL 和异常处理,我们能够在数据库中创建出交互逻辑完整、体验友好的轻量游戏。

项目的类设计遵循了模块化的原则,将出题、判题的逻辑分离在两个存储过程中,代码结构清晰、易于理解和维护。同时,通过字符串处理和校验逻辑,确保了游戏规则的严谨性,避免了用户作弊或违规答题的情况。

这个小游戏虽然简单,但包含了交互程序开发的基本要素:随机数据生成、用户输入处理、逻辑校验、状态管理和结果反馈。对于想要学习 SQL 存储过程开发的初学者来说,是一个很好的练手项目。通过不断扩展功能,可以逐步掌握更复杂的 SQL 技巧和程序设计思想。

  • RAND() + FLOOR():生成 1-13 之间的随机整数,实现随机出题
  • 会话变量 @var:在存储过程间传递题目数字
  • 动态 SQL PREPARE:执行用户输入的数学表达式,实现自动判题
  • 异常处理器:捕获语法错误,避免程序崩溃
  • 字符串处理:校验用户是否正确使用了全部 4 个数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值