课程设计(24点游戏)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24点游戏课程设计报告
1 基本功能描述
24点游戏是一种使用扑克牌来进行的益智类游戏,游戏内容是:从一副扑克牌中抽去大小王剩下52张,任意抽取4张牌,把牌面上的数运用加、减、乘、除和括号等进行运算得出24。每张牌都必须使用一次,但不能重复使用。在不同版本中,对J、Q、和K的处理有些差异。一个常见的版本是把J、Q、和K去除,或当成10;还有一个版本是把J 表示11,Q表示12,K代表13。本次课程设计采用将J、Q、K去除,使四张牌在1~10这十张牌中随机取牌。具体功能如下:
[1]由三个难度级别数,分别为一级、二级和三级。每次发牌前可进行难度设置,若不设置,系统默认为难度级别数为二级。难度级别设置完后,点击“发牌”按钮,桌面上显示四张翻开的扑克牌,并且游戏开始计时,进度条开始前进。
[2]在规定的时间内,用户可以在输入算式编辑框中输入想好的算式,并按下“验算”按钮。如果不输入任何数字和算符,会弹出“表达式有问题!”,然后再弹出一个对话框,显示“对不起,您的输入不正确!”;如果输入的数字与给出的不符或者符号不合法,会弹出“对不起,您的输入不正确!”;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,就会出现“The result is: ! ”;如果输入算式经运算后所得答案正确,则会弹出“你做对了!”。点击弹出对话框的确定按钮,会出现本轮的用时和分数。
[3]如果在规定的时间内,没有点击验算按钮,则会弹出一个对话框,上面显示“Time Over!”。
[4]在结束本轮游戏后,如果用户想继续游戏,点击“重新发牌”按钮即可重新发牌;如果用户想结束游戏,点击“结束”按钮即可结束游戏。
2 设计思路
24点游戏的具体流程图如下图1所示,下面对流程图进行详细的说明。
在游戏开始前有难度设置选项,用户可根据自己的实际水平进行设置。难度级别有三个级别,分别为一级、二级和三级。三个级别是通过时间来区别的,级别越高,可用时间越少。三个级别的对应时间分别是100秒、60秒和50秒。该设置不是必选项。如果用户不设置,系统默认为难度级别二。
按下“发牌”,游戏开始,通过调用srand()和rand()函数,桌面上会随机显示出4张纸牌,这四张牌从1~10这10张牌中随机调出。同时,标识耗时时标的进度条开始前进(m_Progress1->SetPos(m_Progress1->GetPos()+1),计时同步开始(SpendTime++)。由于三
个等级设置的时间不一样,进度条在三种情况下的步长也不相同。
游戏设置了时间限制,该设置是通过比较函数m_Progress1->GetPos()的返回值和参数m_Hardlevel的大小。如果函数的返回值小于参数m_Hardlevel,代表游戏还没结束,用户还有时间进行思考。否则,本轮游戏结束,在函数OnTimer()的作用下,会弹出对话“Time Over!”。
若用户在规定时间内点击了“验算”按钮,系统通过对SubCompute()和TotalCompute()两函数的调用进行相应运算,紧接着系统调用OnYanSuan()函数对编辑框中运算出的结果进行验算,根据验算情况给出相应的结果。出现的结果有以下四中情况:(1)如果用户没在输入算式中输入算式,直接按“验算”按钮,会弹出“表达式不能为空白!”的提示对话框。(2)如果输入的数字与给出的不符或者符号不合法,会弹出“你的输入不正确!”的提示对话框。(3)如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹出“The result is:!”。(4)如果输入算式经运算后所得答案正确,则会弹出“你做对了!”在以上任意一种情况下,点击弹出框中的“确定”按钮,系统会自动给出本局的得分和耗时。游戏的耗时使用SSpendTime.Format("%d",SpendTime)这个函数进行显示,游戏得分是在综合考虑游戏级别、游戏所耗费时间的基础上给出(m_score=100*(m_Hardlevel-SpendTime) /m_Hardlevel)。于是,本轮游戏结束。
本轮游戏结束后,用户可以选择重新开始,否则,可以点击“结束”按钮退出游戏。
3 软件设计
3.1 设计步骤
24点游戏的具体设计步骤如下:
[1]创建MFC AppWizard(exe)工程,键入对应的工程名(dinglu),在应用程序类型中选择基本对话框,其余的都采用默认选项,完成对话框的创建。
[2]通过插入-资源-Bitmap加载图片,图片通过拷贝和复制等操作加载完成。加载完成的图片在对应的工作区可以找到,选中对其名字进行修改。
在对话框中添加4个图像、9个按钮、3个编辑框、1个进度条和3个单选按钮。然后,根据属性对以上所添加的控件进行属性修改,主要是对其进行重命名。图像内的属性修改除改名外,还要添加位图。
[3]下一步是对以上控件建立类向导,主要包括Add Function、Add Variable和Edit Code 这三项的添加。
[4]在类的原文件中添加实现功能所需要的各种函数,并添加相应的代码,同时在头文件中添加对各种函数及变量的声明。
[5]对完成的程序进行保存,然后开始调试,根据错误进行修改,直至程序不在报错,并且可以实现预计的各种功能。
图2 24点游戏运行图
3.2 界面设计
24点游戏所用控件说明图如下:
表1 控件类型、ID及相关说明
对象ID Caption或说明变量名
进程IDC_PROGRESS1 耗时m_Progress1 静态文本IDC_STATIC 静态文字说明
一级单选按钮IDC_RADIO1 一级m_Hardleve
二级单选按钮IDC_RADIO2 二级
三级单选按钮IDC_RADIO3 三级
位图IDC_Picture0 位图
位图IDC_Picture1 位图
位图IDC_Picture2 位图
位图IDC_Picture3 位图
编辑框IDC_EDIT1 输入计算m_Edit1
编辑框IDC_STATIC10 时间SpendTime 编辑框IDC_STATIC11 得分m_score
按钮IDC_Start 开始
按钮IDC_YanSuan 验算