c++程序设计实践mfc打地鼠.ppt
《c++程序设计实践mfc打地鼠.ppt》由会员分享,可在线阅读,更多相关《c++程序设计实践mfc打地鼠.ppt(36页珍藏版)》请在咨信网上搜索。
C+程序设计实践打打Made By陈锴刘若欣王一凡杨仕俊地地鼠鼠*所有排序均按学号DEMO1.题目分析题目分析本游戏是一个基于对话框C+应用程序。在程序的编辑中涉及到MFC控件的编辑和使用,文件的读,消息的响应。本程序可以实现的功能有:1.选择不同的难度开始游戏;2.鼠标击中“地鼠”时得分+1;3.未击中时得分不变,统计未击中次数+1;4.切换难度时得分清零;5.点错5次后显示“GameOver”,得分不再增加,提示重选难度进行游戏;6.点击按钮读取txt文件显示得分榜2.总体设计分析项目提出主逻辑控件与功能函数得分+1功能函数未击中+1功能函数难度选择控件与消息响应函数得分榜显示控件与消息响应函数调试与优化开始选择关卡击中地鼠?得分加一未击中加一5次未击中?鼠标点击YNYN3.详细设计分析详细设计介绍界面构成模块实现:王一凡PushButtonComboBoxStaticText详细设计介绍控件属性模块实现:王一凡Combo BoxPush Button将准备好的png格式文件上传到在线icon制作网站:http:/www.ico.la/详细设计介绍icon制作模块实现:王一凡在资源视图中右击icon,选择insert,在弹出的对话框中选择导入详细设计介绍icon导入模块实现:王一凡详细设计介绍添加变量模块实现:陈锴杨仕俊public:CComboBoxm_eb;Cstringm_select;private:inta;interror;CButton*PMouse16;intnowMouse;intgameScore;详细设计介绍编写OnInitDialog函数模块实现:陈锴杨仕俊SetWindowText(打地鼠);/改变标题栏的名称gameScore=0;/初始得分为0nowMouse=0;/初始化鼠标点击位置详细设计介绍编写OnInitDialog函数模块实现:陈锴杨仕俊srand(unsigned)time(NULL);/随机数发生器播种,srand函数是随机数发生器的初始化函数。原型:voidsrand(unsignedseed);用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如:srand(1);直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用time函数来获得系统时间,它的返回值为从00:00:00GMT,January1,1970到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即:srand(unsigned)time(&t);还有一个经常用法,不需要定义time_t型t变量,即:srand(unsigned)time(NULL);直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。详细设计介绍编写OnInitDialog函数模块实现:陈锴杨仕俊for(inti=0;i16;i+)PMousei=(CButton*)GetDlgItem(IDC_BUTTON1+i);/GetDlgItem函数的功能是返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应的对象的信息。本段即将指向第i个button的指针存入数组PMouse,实现button控件PMouse的一一对应详细设计介绍编写OnCommand函数模块实现:陈锴杨仕俊CStringstr;/定义CString型变量strfor(inti=0;iGetDlgCtrlID()break;/GetDlgCtrlID函数的功能是获得指定控件的ID号,LOWORD(wParam)是命令的ID号。详细设计介绍编写OnCommand函数模块实现:陈锴杨仕俊if(i=nowMouse)gameScore+;/如果检测到鼠标响应位置与随机生成的“地鼠”位置相同,得分加一str.Format(%d,gameScore);/Format函数将十进制数转化为字符串,%d表示十进制,这里将gameScore转化为字符串并赋给strCStatic*pstr=(CStatic*)GetDlgItem(IDC_STATIC);/将文本str传输到静态控件pstr-SetWindowText(str);/将静态控件中的文本str即得分显示出来详细设计介绍编写OnTimer函数模块实现:陈锴杨仕俊PMousenowMouse-SetIcon(0);/SetIcon能将图标自动地放到按钮的上面,缺省时居中放置。如果图标太大,则会自动剪裁。nowMouse=rand()%16;/产生随机数取余PMousenowMouse-SetIcon(AfxGetApp()-LoadIcon(IDI_ICON1);/加载已装载的图片资源CDialog:OnTimer(nIDEvent);/OnTimer()是响应CDialog对象产生的WM_Timer消息。nIDEvent表示要响应TIMER事件的ID。详细设计介绍编写OnSelchangeCombo函数模块实现:刘若欣intnIndex=m_eb.GetCurSel();/GetCurSel函数用于获取当前光标位置,定义int型变量nIndex并将得到的光标位置赋给它。CStringstrCBText;/定义CString类变量strCBTextm_eb.GetLBText(nIndex,strCBText);/GetLBText把选中字符赋值给strCBText即将光标所在的字符串赋给strCBTextintnLength=strCBText.GetLength();/定义int型变量nLength并将strCBText的长度赋给它intnLengthLeft=0;/定义int型变量nLength初始值为0nLengthLeft=strCBText.Find(:);/用Find函数获取冒号的位置详细设计介绍编写OnSelchangeCombo函数模块实现:刘若欣CStringstrRightString;/定义CString型变量strRightStringstrRightString=strCBText.Right(nLength-nLengthLeft-1);/Right函数从右边第一个字符起获得从右向左nLength-nLengthLeft-1个字符。此处获得冒号右面的字符串。a=atoi(strRightString);/atoi函数将字符串转化为整型数。具体为如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符0)字符时停止转换,返回整型数。SetTimer(1,a,NULL);/设置计数器,时间间隔为a,单位毫秒详细设计介绍编写OnButton函数模块实现:刘若欣CFilemyfile;CStringfilename=“c:得分榜.txt”;myfile.Open(filename,CFile:modeRead);/文件打开及打开方式intfilelength=myfile.GetLength();/获取文件长度CStringdata;/定义字符串类,接收数据char*temp;/临时变量,用于read函数按字节读取数据temp=newcharfilelength+1;myfile.Read(temp,filelength);tempfilelength=0;/读文件data=temp;/赋值给data,等号=已经在CString类中重载,直接使用,可以实现赋值deletetemp;GetDlgItem(IDC_STATIC3)-SetWindowText(data);/发送到IDC_STATIC34.遇到的问题及解决遇到的问题及解决在低难度的模式下,鼠标快速多次单击一个有“地鼠”的Button,得分会持续增加。问题一:“可以刷分了!233333”遇到的问题及解决解决方法:当鼠标响应当前的地鼠位置,可以重新运行一边Ontimer函数,更新随机地鼠的位置。不过此时需要重新设置时间,否则就会出现地鼠位置突然变化的情况。因为前一个地鼠(1000ms)可能在500ms被选中,此时地鼠变换位置,就会只停留500ms就转换位置了,所以要重新设置时间。遇到的问题及解决由于rand()的随机性,会出现rand()%16为0的情况。在这种情况下,没有任何一个Button加载地鼠图标。问题二:“什么都没有让宝宝怎么点!?严重影响游戏体验”遇到的问题及解决解决方法:加一个循环语句和一个IF语句,循环5次,当随机数取余为0的情况就重新取余,5次就大大降低了取余为0的情况。5.尚存的不足尚存的不足1.UI有待优化;2.Button不能批量定义大小,批量对齐;3.尚未完成得分榜的写操作;4.6.心得体会心得体会经过一周多的时间我们完成了一个简单的打地鼠程序,经过这次小组合作我认识到了很多。首先一个明确的目标十分重要,在开始设计之前我们花了很长时间来讨论要做什么,否定了很多不成熟的方案。但是一旦目标定下来是打地鼠后进度就开始变快了,根据组内每个人的特点分配了不同的任务,学习能力比较强的同学负责一些较难的模块,然后每个人将各自负责的部分在组内讲解清楚,真正达到了小组学习的目的。心得体会另外我们发现程序设计中不止需要学习能力,创新能力也很重要,通过网络了解了打地鼠程序的主要思路和一些基本知识后,我们将一部分精力放在了优化程序上,增加一些我们自己希望的功能,删去一些我们认为设计不好的地方,(辩证否定的实质是扬弃,新事物对旧事物既批判又继承,既克服其消极因素又保留其积极因素)。心得体会我们还认识到,一个程序的真正价值是面向使用者,只有充实的内涵没有必要的外观也是不够的,就和这次大作业一样,一个好的程序没有一个好的PPT去展示也是不足的,因此我们在展示环节也下了一番功夫,从PPT的设计到台上展示的准备我们都充分发挥了小组成员的优势。为了设计出令自己满意的程序,在设计过程中,我们将一些平时没有掌握好的部分又学习了一次,并且在网上查找了很多相关的资料。提高了我们的学习能力和从冗杂信息中找到我们需要的信息的能力。心得体会小组成员一致认为,掌握知识的多少很重要但不是决定因素,学习能力才显示出一个优秀小组的能力,很多代码可能我们自己难以独立实现,但是借助网络和老师给我们的额外资料我们可以完成一些很有意思的设计。这与老师在开课初传输给我们的理念大致相同,我们认为我们从这门课学到了很多。谢谢观赏- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 实践 mfc 地鼠
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文