24点游戏设计报告

上传人:cl****1 文档编号:554888186 上传时间:2023-06-02 格式:DOC 页数:31 大小:537.03KB
返回 下载 相关 举报
24点游戏设计报告_第1页
第1页 / 共31页
24点游戏设计报告_第2页
第2页 / 共31页
24点游戏设计报告_第3页
第3页 / 共31页
24点游戏设计报告_第4页
第4页 / 共31页
24点游戏设计报告_第5页
第5页 / 共31页
点击查看更多>>
资源描述

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

1、基本功能描述24点游戏是一种常见的数学运算游戏,玩游戏者只需根据系统给出的四张19的纸牌算出24即可,而程序主要负责实现随机发牌、结果验算、计算得分和难度设置等功能。设计的程序要求具有如下功能:(1)按下“发牌”按钮时开始游戏,桌面上显示4张翻开的扑克牌,并且游戏开始计时,进度条开始前进。(2)当用户能够将4张牌计算出24时,可以按下“输入算式”按钮,此时游戏计时停止,用户可在编辑框中输入。(3)输入结束,用户按下“验算”按钮,计算输入的多项式。验算通过,显示“正确”;验算出错,显示“错误”。(4)如果用户希望继续游戏,则可按下“发牌”按钮;否则按下“结束游戏”按钮。在运行游戏时,还可以通过难

2、度级别的下拉列表来改变游戏的难度。改变难度可以变化游戏的限时和游戏加分的规则。运行后的初始界面为:运行成功后的界面为:设计框图运行调试出错调试出错调试出错功能调试功能调试功能调试添加进度条完成调试通过编写消息处理代码编写消息处理代码编写消息处理代码添加列表控件添加组合框添 加按钮添加静态控件应用程序界面设计导入扑克牌资源创建基于对话框的应用程序原理、功能分析开始加载菜单资源软件设计过程一、应用程序界面设计首先创建一个名为“24点游戏”的工程。启动VC6.0,依次点击“文件新建”,在弹出的对话框中选择工程类型为“MFC AppWizard(exe)”,工程名取为“24点游戏”,保存在“D:赵志刚

3、24点游戏”目录下,选择基于对话框的应用程序类型,生成与用户交互的应用程序界面。程序界面如图1所示(图1)通过对应用程序基本功能的描述,可以知道要实现该程序的功能,在所设计的基于对话框的应用程序中应包括以下资源及控件:(一)资源扑克牌资源:由于Windows系统自带的纸牌游戏中存放有扑克牌,故可以将所需的扑克牌资源导入应用程序。首先找到位于WINDOWS目录下的cards.dll文件,然后选择VC IDE中的“文件 | 打开”,文件类型选择Executable Files(.exe;.dll;.ocx),“打开方式” 选择Resource,然后打开cards.dll文件(如下图2所示)。打开c

4、ards.dll,选择其中所需的Bitmap,按住鼠标左键不放,将Bitmap直接拖入应用程序的Workspace工作区。本程序选择各种花色从A9以及用于程序运行后初始显示为背面的纸牌总计37张牌。将所需纸牌全部导入应用程序后,更改其属性,将ID设置为从137这些整数值。 图(2) 图(3)菜单资源:依次点击“插入资源”,在弹出的对话框中双击“Menu”项(如图3所示),即实现了向应用程序中加载菜单资源。(二)控件(1)静态控件:共9个,其中4个用于显示随机产生的4张扑克牌,另外5个分别用于显示提示文字“耗时标识:”、“难度级别:”、“当前得分:”、“历史记录:”以及累计游戏得分值。具体为:

5、耗时标识:提示用户计时时间。 难度级别:提示用户当前选择的难度级别。 当前得分:提示用户累计总得分信息。历史记录:提示用户有关游戏次数及正误信息。显示累计游戏得分值,初始设置为0(2)按钮:共4个,分别是:“发牌”按钮:点击此按钮,随机产生4张扑克牌并在4个静态控件上显示,同时启动计时器,进度条开始计时。游戏开始。“输入算式”按钮:当用户能够将4张牌计算出24时,点击此按钮即可在编辑框中输入计算式,同时停止游戏计时,进度条停止前进。“验算”按钮:点击此按钮,应用程序即对用户输入的计算式进行检验,如果判断用户输入的计算式恰为所发牌的点数,则对输入算式进行验算,同时将计算结果以消息框的形式告知用户

6、,并在历史记录列表框中加以显示。若计算结果正确,程序还根据难度级别在“当前得分:”中加分;若输入算式不合乎要求,则告知用户一个错误消息。最后,为防止游戏者不断点击此按钮以增加得分,当用户一次点击后即被禁止,呈灰色显示。“结束游戏”按钮:点击此按钮则游戏结束,退出应用程序。(3)组合框:共1个,此框中设置有“热身运动”和“智力比拼”两个难度级别以供游戏者选择,不同的难度级别在一次游戏得分和耗时标识进度条计时快慢上有所不同。游戏者点击不同的选项即可设定不同的难度级别。(4)列表控件:共1个,用于记录游戏者总的游戏次数以及相关的对错信息。(5)编辑框:共1个,用于接收游戏者输入的计算式。 (6)进度

7、条:共1个,游戏者单击发牌按钮后,计时器启动,耗时标识进度条同时开始计时,游戏者必须在耗时标识进度条计时终止前思考出计算式,然后单击“输入算式”按钮,此时耗时标识进度条停止计时。否则,耗时标识进度条计时终止,应用程序以消息框的形式报告真遗憾,时间到了!。添加这些控件后,再设置其属性,如ID及Caption等。各控件的相关设置信息列表如下:控件对象IDCaption显示纸牌的静态控件1IDC_STATIC1/显示纸牌的静态控件2IDC_STATIC2/显示纸牌的静态控件3IDC_STATIC3/显示纸牌的静态控件4IDC_STATIC4/耗时标识提示静态控件IDC_STATIC耗时标识:难度级别

8、提示静态控件IDC_STATIC5难度级别:当前得分提示静态控件IDC_STATIC6当前得分:显示当前得分静态控件IDC_STATIC7/历史记录提示静态控件IDC_STATIC8历史记录发牌按钮IDC_BUTTON1发牌输入算式按钮IDC_BUTTON2输入算式验算按钮IDC_BUTTON3验算结束游戏按钮IDC_BUTTON4结束游戏进度条IDC_PROGRESS1/输入算式编辑框IDC_EDIT1/显示历史记录列表控件IDC_COMBO1/难度级别选择组合框IDC_LIST1/添加控件以及设置属性等完成后,应用程序的界面如下图4所示(图4)(注:由于用于显示随机产生的4张牌及当前得分的

9、静态控件其Caption并未设置任何内容,故在界面中并未显示。)二、编写应用程序代码(一)为添加的各个控件定义成员变量在进行程序的代码编写过程之前需要为某些控件连接变量。定义成员变量可以在“建立类向导”中完成,其操作步骤为:在欲添加成员变量的控件上右击,点击弹出的快捷菜单中的“建立类向导”项,在随后弹出的对话框中选择“Member Variables”选项卡,单击欲添加变量的控件ID标识,接着点击“Add Variable”按钮,在弹出的对话框中设定“Member variable name”、“Category”及“Variable type”,然后点击OK按钮,则为该控件添加了一个成员变量

10、。其他控件成员变量的添加可以仿此完成。其演示过程如下图57所示: 图(5) 图(6)图(7)比较图5和图7,可以看到,在图7中已经为编辑框控件添加了一个成员变量m_edit,其类型为CString类。重复此过程,为所有需要添加变量的控件连接变量,结果如下表所示:控件对象变量名类型IDC_STATIC1m_bmp1CStaticIDC_STATIC2m_bmp2CStaticIDC_STATIC3m_bmp3CStaticIDC_STATIC4m_bmp4CStaticIDC_COMBO1m_cbCComboBoxIDC_EDIT1m_editCString(二)为按钮及组合框控件添加消息响应函

11、数由于按钮及组合框控件均能发送消息,故应用程序中应有对此消息的响应函数,以处理这些消息并实现相应的功能。此程序中为这些控件添加的方法如下表所示:控件对象方法IDC_BUTTON1OnButton1()IDC_BUTTON2OnButton2()IDC_BUTTON3OnButton3()IDC_BUTTON4OnButton4()IDC_LIST1OnSelchangeCombo1()(三)方法的实现A应用程序启动时会自动显示4张背面的纸牌,并且难度级别默认为“热身运动”(可以选择“热身运动”或“智力比拼”),当前得分为0,列表控件无历史记录,由此则需要在构造函数CMy24Dlg(CWnd*

12、pParent /*=NULL*/)及初始化函数OnInitDialog( )中添加如下代码:/定义一个结构体变量lvItemLV_ITEM lvItem;CMy24Dlg:CMy24Dlg(CWnd* pParent /*=NULL*/)/设置列表控件列属性 lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;lvItem.state = 0; lvItem.stateMask = 0; lvItem.iImage = 0;BOOL CMy24Dlg:OnInitDialog() /初始化组合框m_cb.InsertString(0,智力比拼)

13、; /为组合框添加子项m_cb.InsertString(1,热身运动); /为组合框添加子项m_cb.SetCurSel(1); /默认为“热身运动”SetDlgItemText(IDC_STATIC7,0); /开始时得分为0/设置列表控件风格LV_COLUMN lvColumn; /定义一个结构体变量lvColumn lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;lvColumn.fmt = LVCFMT_CENTER;lvColumn.cx = 52;/设置列表控件列标题lvColumn.iSubItem = 0;lvColumn.pszText = 题数;(CListCtrl*)GetDlgItem(IDC_LIST1)-InsertColumn(0, &lvColumn);lvColumn.iSubItem = 1;lvColumn.ps

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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