24点游戏设计报告

上传人:博****1 文档编号:498840047 上传时间:2024-01-19 格式:DOCX 页数:28 大小:575.47KB
返回 下载 相关 举报
24点游戏设计报告_第1页
第1页 / 共28页
24点游戏设计报告_第2页
第2页 / 共28页
24点游戏设计报告_第3页
第3页 / 共28页
24点游戏设计报告_第4页
第4页 / 共28页
24点游戏设计报告_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《24点游戏设计报告》由会员分享,可在线阅读,更多相关《24点游戏设计报告(28页珍藏版)》请在金锄头文库上搜索。

1、24点游戏程序设计报告1基本功能描述1.1 24点游戏介绍24点游戏是一款与计算有关的益智游戏, 其游戏规则如下:从一副扑克牌中抽去大小 王剩下52张,任意抽取4张牌,把牌面上的数运用加、减、乘、除和括号等进行运算得 出24便可获胜。值得注意的是每张牌都必须使用一次,但不能重复使用,其中, J代表数 值11, Q代表数值12, K代表数值13。1.2 游戏功能介绍“游戏难度可选”功能设计。将游戏难度分别为初级、中等和高级。每次发牌前可 进行难度设置,若不设置,系统默认为难度级别数为初级。难度级别设置完后,点击“开 始游戏”按钮,便可以开始游戏,并开始计时。“游戏规则可查看”功能设计。此功能是在

2、 Dialog类创建ID为IDD_DIALOG_NE W对话框,并在对话中添加静态文本,其中文本内容即为1.1中陈述的游戏规则。“游戏时间限制即进度条”功能设计。在规定的时间内,用户可以在输入算式编辑 框中输入想好的算式,并按下“结果”按钮。如果不输入任何数字和算符,会弹出“输入 有误! ”;如果输入的数字与给出的不符或者符号不合法,会弹出“输入有误!;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,就会出现“ 回答不正确! ”;如果 输入算式经运算后所得答案正确,则会弹出“你做对了!如果在规定的时间内,没有点击验算按钮,则会弹出一个对话框,上面显示“ Time Over!”。“菜单栏”

3、功能设计。在设计界面时,添加了菜单栏功能,菜单栏的主要选项有: 游戏选项,游戏难度,帮助。以上就是此次 24点游戏主要的基本功能,其具体游戏功能, 以及功能实现将在下文详述。2设计思路2.1游戏过程简述在游戏开始前有难度设置选项,用户可根据自己的实际水平进行设置。难度级别有三 个级别,分别为初级、中等和高级。三个级别是通过时间来区别的,级别越高,可用时间 越少。三个级别的对应时间分别是 60秒、40秒和20秒。该设置不是必选项。如果用户不 设置,系统默认为初级。下面详细介绍各个功能模块的实现过程。运行程序LiPingLin_24后,当单击按钮“游戏规则”时,编译器会调用函数OnOperStri

4、ng()来弹出又t话框IDD_DIALOG_NEW ;从而实现“游戏规则可查看”功能。运行程序LiPingLin_24后,当点击单选按钮“初级” “中等” “困难”(选择游戏 难度)时,编译器会设置游戏难度。int iRADIO=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);if(iRADIO=IDC_RADIO1)m_Hardlevel=60;初级,允许时间为60秒初级if(iRADIO=IDC_RADIO2)m_Hardlevel=40;/中等,允许时间为40秒中等if(iRADIO=IDC_RADIO3)m_Hardlevel=20; 高级,允

5、许时间为20秒高级运行程序LiPingLin_24后,当单击按钮“开始游戏”时,编译器会调用函数OnStart() 来实现编辑框清零,耗时初始化为零,读取游戏难度即允许时间,随机产生4张扑克牌并加载到扑克牌的位置。void CLiPingLin_24Dlg二OnStart()S=1;m_Edit1= _T();/对编辑框清空UpdateData(FALSE);/用负给控件变量的值来刷新控件,让控件把操作后的变量显 示出srand(int)time(0);/以(int)time(0)做为 srand()函数的种子 seedfor(int i=0;iSetBitmap(HBITMAP(Bitmap

6、Number0);(CStatic*)GetDlgItem(IDC_Picture1)-SetBitmap(HBITMAP(BitmapNumber1);(CStatic*)GetDlgItem(IDC_Picture2)-SetBitmap(HBITMAP(BitmapNumber2);(CStatic*)GetDlgItem(IDC_Picture3)-SetBitmap(HBITMAP(BitmapNumber3);单击按钮“开始游戏”后,当编辑框输入完毕单击按钮“结果验证”时,编译器会 函数OnYanSuan(四停止计时,刷新数据,验证数据是否满足24。系统通过对SubCompute(

7、) 和TotalCompute()两函数的调用进行相应运算,紧接着系统调用OnYanSuan()函数对编辑框中运算出的结果进行验算,根据验算情况给出相应的结果。出现的结果有以下四中情况: 如果用户没在输入算式中输入算式,直接按“结果验证”按钮,会弹出“表达式不能为空 白! ”的提示对话框。如果输入的数字与给出的不符或者符号不合法,会弹出“输入有 误! ”的提示对话框。如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹 出“回答不正确! ”。如果输入算式经运算后所得答案正确,则会弹出“你做对了 !”void CLiPingLin_24Dlg二OnYanSuan()运行程序LiPingLi

8、n_24后,当单击按钮“游戏结束”时,编译器会调用函数OnOk() 来实现退出。void CLiPingLin_24Dlg二OnOk() / TODO: Add your control notification handler code here OnOK();本轮游戏结束后,用户可以选择重新开始,否则,可以点击“结束游戏”按钮退出游 戏。2.2游戏设计流程图综合2.1游戏过程简述,分析游戏功能,具 24点游戏程序设计流程图见图1。图1 24点游戏程序设计流程图3软件设计3.1 设计步骤下面详细介绍24点游戏的具体设计步骤。创建MFC AppWizard(exe)工程,键入对应的工程名(di

9、nglu ),在应用程序类型中 选择基本对话框,其余的都采用默认选项,完成对话框的创建。通过插入资源Bitmap加载图片,图片通过拷贝和复制等操作加载完成。加载完成的图片在对应的工作区可以找到,选中对其名字进行修改。在对话框中添加4个图像、9个按钮、3个编辑框、1个进度条和3个单选按钮。然后, 根据属性对以上所添加的控件进行属性修改,主要是对其进行重命名。图像内的属性修改 除改名外,还要添加位图。下一步是对以上控件建立类向导,主要包括Add Function、Add Variable 和EditCode这三项的添加。在类的原文件中添加实现功能所需要的各种函数,并添加相应的代码,同时在头文 件中

10、添加对各种函数及变量的声明。对完成的程序进行保存,然后开始调试,根据错误进行修改,直至程序不在报错, 并且可以实现预计的各种功能。3.2 关键功能的实现3.2.1 随机发牌功能的实现首先,通过BOOL CDingluDlg:OnInitDialog()中,根据纸牌对应的ID号加载纸牌,例 如:Bitmap7.LoadBitmap(IDB_BITMAP7)这条语句加载标有 7的纸牌。利用该函数加载 了标号110的十张纸牌和两张背景纸牌。然后运行中的以下一段代码,即可在图像框中 得到四张铺开的纸牌。srand(seed用来设置rand()产生随机数时的随机数种子。参数 seed必须是个整数,通 常

11、可以利用geypid()或time(0)的返回值来当做seed如果每次seed都设相同值,rand()所 产生的随机数值每次就会一样。rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别 长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在 0至RAND_MAX 问。在调用此函数产生随机数前,必须先利用srand(回好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字, 每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand(3.2.2 计时功能的实现首先,在 vo

12、id CDingluDlg二OnStart()中,通过 m_Progress-SetStep(1和 m_Progress -SetPos(0股置进度条的步长为1,进度条的初始位置居左。然后调用 void CDingluDlg 二OnTimer(UINT nIDEvent)来完成计时功能。利用函数 if(m_Progress1-GetPos()= m_Hardlevel)来判断即使结束了没有,如果括号中的条件满足,则计时结束,跳出“TimeOver! ”的提示框。如果括号中的条件不满足,则执行以下代码:CProgressCtrl* m_Progress1=(CProgressCtrl*)GetD

13、lgItem(IDC_PROGRESS1);m_Progress1-SetRange(0,m_Hardlevel);m_Progress1-SetPos(m_Progress1-GetPos()+1); /进度条前进一步上述代码表示,如果时间没到,时间每流逝1秒,进度条就前进一步。当游戏时间即将结束的时候,进度条亦前进到最后一步。3.2.3 计算功能的实现对于输入结果的验算,主要是通过 int LastPos(CString Str), int FirstPos(CString Str), char FirstF(CString Str), int SubCompute(CString Str

14、), int TotalCompute(CString Str外函数来 来确定运算式各符号优先级和最终计算出输入算式的结果。Pluspos表示十号出现的位置,如果没有十号出现,对pluspos负一个不可能的值;如果十号存在,将pluspos与pos比较大 小。如果 pluspos小于 pos,斗p pluspos的值负给 poso pluspos再与tempos比较,如果在减 号之前出现,显示的结果是十号。 代码1:int CLinPingLin_24Dlg:TotalCompute(CString Str) int First=Str.ReverseFind()+1; while(First) CString SubStr=Str.Mid(First,(Str.GetLength()-First);int Last=SubStr.Find()+1; Last+=FirstCString Left=Str.Mid(0,First-1)CString Middle=Str.Mid(First,Last-First-1)CString Right=Str.Mid(Last,Str.GetLength()-Last)int Result=SubCompute(Middle)Middle.Format(%d,Result);Str=Left+Middle+Right;F

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号