1、 面面向向对对象象程程序序设设计计 课课程程设设计计 题 目: 数字教学游戏 院 系: 专 业: 姓名学号: 指导老师: 日 期: 年 月 日 摘要摘要 本次课设的目的是编写一个教学游戏,教授学生学习算术计算。程序对加法和减 法进行测试。程序共有 4 个难度级别,第 1 级测试两个小于 10 并且和也小于 10 的数字加法;第 2 级进行任何两个 1 位数字的加法;第 3 级是差为非负的两个 1 位数的减法;第 4 级是执行一个两位数的加法。程序将随机产生问题并读取游戏 参与者输入的答案。对于每一个问题,游戏参与者都有两次回答问题的机会。 关键字关键字:数字游戏,加法,减法 目录目录 一、一、
2、 课程设计题目及分析课程设计题目及分析 1 1 二、二、 CRCCRC 卡片和卡片和 UMLUML 类图类图 1 1 三、三、 设计步骤及关键代码说明设计步骤及关键代码说明 3 3 四四、 软件测试软件测试 4 4 五五、 总结与心得体会总结与心得体会 5 5 六六、 附录(新增以及修改的代码)附录(新增以及修改的代码) 6 6 1 一、一、 课程设计题目及分析课程设计题目及分析 编写一个教学游戏,教授学生学习算术计算。程序将对加法和 减法进行测试。程序共有四个难度级别,第 1 级测试两个小于 10 并 且和也小于 10 的数字加法;第 2 级进行任何两个 1 位数字的加法; 第 3 级是差为
3、非负的两个 1 位数的减法; 第 4级是执行一个两位数的 加法。程序将随机产生问题并读取游戏参与者输入的答案。 对于每一 个问题, 游戏参与者都有两次回答问题的机会。在得到 5 分后游戏进 入下一级。要实现 4 个等级的功能特征,需要用 4 个 if 语句判断选 择的关数,然后通过 rand()函数限定生成两个随机数并完成相关运 算。通过玩家类 Player 储存玩家的分数以及关数信息,Game 类进行 游戏的运转。 二、二、 (1 1)CRCCRC 卡片卡片 Player类 初始化玩家信息(name、 score、level) 通过Game类更新Player的对象 通过Increment_s
4、core函 数实现分数增加和大于5 分时自动进入下一关 功能协作类 2 Game类 玩家记录的读取与保存 录入玩家姓名和等级 将读取的玩家姓名name和选 关的信息level以及所得分 数更新到Player的对象中 功能协作类 生成随机数并得到运算 结果,判断玩家输入的 结果是否正确 (2 2)UMLUML 类图类图 +Game() +play() : void +read_player_information() : void +play_round() : void +get_guess() : int -player : Player GameGame +Player() +Player
5、(in player_name : wchar_t, in initial_level : int) +increment_score() : void +get_score() : int +get_level() : int +get_name() : wchar_t -name : wchar_t -score : int -level : int PlayerPlayer player : Player mathquiz : Game 依赖 3 三、三、 设计步骤及关键代码说明设计步骤及关键代码说明 1.由于源代码中已给出前三个等级的条件判断,增加第四等级 需要在 play_round
6、 函数中多加一个如下第四等级的条件判断 以及修改下相应的界面提示和选关 else if(player.get_level()=4) i1=rand_int(10,99); i2=rand_int(10,99); answer=i1+i2; 2.因为只有第三等级是减法,一、二、四等级都是求和,所以 把通过选关读取读者输入结果的条件语句修改如下,这样就可 实现第四难度等级的增加。 if (player.get_level()!=3) guess = get_guess(i1, i2, answer, “sum“); else guess = get_guess(i1, i2, answer, “difference“); 3.实现查询游戏玩家等级的功能,只需加一句如下的输出玩家 等级语句即可,由于每得五分后游戏等级会增加,并且分数也 在不停变化, 所以把输出玩家等级的语句加