收藏 分销(赏)

c++程序设计实践mfc打地鼠PPT.ppt

上传人:快乐****生活 文档编号:7437236 上传时间:2025-01-04 格式:PPT 页数:36 大小:3.82MB
下载 相关 举报
c++程序设计实践mfc打地鼠PPT.ppt_第1页
第1页 / 共36页
c++程序设计实践mfc打地鼠PPT.ppt_第2页
第2页 / 共36页
c++程序设计实践mfc打地鼠PPT.ppt_第3页
第3页 / 共36页
c++程序设计实践mfc打地鼠PPT.ppt_第4页
第4页 / 共36页
c++程序设计实践mfc打地鼠PPT.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,#,C+,程序设计实践,打,Made By,陈锴 刘若欣 王一凡 杨仕俊,地,鼠,*,所有排序均按学号,1,2025/1/4 周六,DEMO,2,2025/1/4 周六,题目分析,总体设计介绍,详细设计介绍,遇到的问题,尚存的不足,心得体会,3,2025/1/4 周六,1.,题目分析,4,2025/1/4 周六,题目分析,本游戏是一个基于对话框,C+,应用程序。,在程序的编辑中涉及到,MFC,控件的编辑和使用,文件的读,消息的响应。,本程序可以实现的功能有:,1.,选择不同的难度开始游戏;,2.,鼠标击中“

2、地鼠”时得分,+1,;,3.,未击中时得分不变,统计未击中次数,+1,;,4.,切换难度时得分清零;,5.,点错,5,次后显示“,Game Over,”,得分不再增加,提示重选难度进行游戏;,6.,点击按钮读取,txt,文件显示得分榜,5,2,2.,总体设计分析,6,2025/1/4 周六,项目提出,主逻辑,控件与功能函数,得分,+1,功能函数,未击中,+1,功能函数,难度选择,控件与消息响应函数,得分榜显示,控件与消息响应函数,调试与优化,7,2,开始,选择关卡,击中地鼠?,得分加一,未击中加一,5,次未击中?,鼠标点击,Y,N,Y,N,8,2,3.,详细设计分析,9,2025/1/4 周六

3、,详细设计介绍,界面构成,模块实现:王一凡,Push Button,Combo Box,Static Text,10,2,详细设计介绍,控件属性,模块实现:王一凡,Combo Box,Push Button,11,2,将准备好的,png,格式文件上传到在线,icon,制作网站:,www.ico.la/,详细设计介绍,icon,制作,模块实现:王一凡,12,2,在资源视图中右击,icon,,选择,insert,,在弹出的对话框中选择导入,详细设计介绍,icon,导入,模块实现:王一凡,13,2,详细设计介绍,添加变量,模块实现:陈锴 杨仕俊,public:,CComboBox m_eb;,Cst

4、ring m_select;,private:,int a;,int error;,CButton*PMouse16;,int nowMouse;,int gameScore;,14,2,详细设计介绍,编写,OnInitDialog,函数,模块实现:陈锴 杨仕俊,SetWindowText(,打地鼠,);/,改变标题栏的名称,gameScore=0;,/,初始得分为,0,nowMouse=0;,/,初始化鼠标点击位置,15,2,详细设计介绍,编写,OnInitDialog,函数,模块实现:陈锴 杨仕俊,srand(unsigned)time(NULL);,/,随机数发生器播种,,srand,函

5、数是随机数发生器的初始化函数,。,原型:,void srand(unsigned seed);,用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的,rand(),函数会出现一样的随机数。如:,srand(1);,直接使用,1,来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用,time,函数来获得系统时间,它的返回值为从,00:00:00 GMT,January 1,1970,到现在所持续的秒数,然后将,time_t,型数据转化为,(unsigned),型再传给,srand,函数,即:,srand(unsigned)time(,还有一个经常用法

6、,不需要定义,time_t,型,t,变量,即:,srand(unsigned)time(NULL);,直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的,t,数据。,16,2,详细设计介绍,编写,OnInitDialog,函数,模块实现:陈锴 杨仕俊,for(int i=0;i16;i+),PMousei=(CButton*)GetDlgItem(IDC_BUTTON1+i);,/GetDlgItem,函数的功能是返回窗口中指定参数,ID,的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。一个句柄是指使用的一个唯一的整数值,即一个,4,字节,(64,位程序中为,8,字节,)

7、,长的数值,来标识,应用程序,中的不同,对象,和同类中的不同的,实例,如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应的对象的信息。本段即将指向第,i,个,button,的指针存入数组,PMouse,,实现,button,控件,PMouse,的一一对应,17,2,详细设计介绍,编写,OnCommand,函数,模块实现:陈锴 杨仕俊,CString str;,/,定义,CString,型变量,str,for(int i=0;iGetDlgCtrlID(),break;,/GetDlgCtrlID,函数的功能是获得指定控件的,ID,号,,LOWORD(wPa

8、ram),是命令的,ID,号。,18,2,详细设计介绍,编写,OnCommand,函数,模块实现:陈锴 杨仕俊,if(i=nowMouse),gameScore+;,/,如果检测到鼠标响应位置与随机生成的“地鼠”位置相同,得分加一,str.Format(%d,gameScore);,/Format,函数将十进制数转化为字符串,,%d,表示十进制,这里将,gameScore,转化为字符串并赋给,str,CStatic*pstr=(CStatic*)GetDlgItem(IDC_STATIC);,/,将文本,str,传输到静态控件,pstr-SetWindowText(str);,/,将静态控件中

9、的文本,str,即得分显示出来,19,2,详细设计介绍,编写,OnTimer,函数,模块实现:陈锴 杨仕俊,PMousenowMouse-SetIcon(0);,/SetIcon,能将图标自动地放到按钮的上面,缺省时居中放置。如果图标太大,则会自动剪裁。,nowMouse=rand()%16;,/,产生随机数取余,PMousenowMouse-SetIcon(AfxGetApp()-LoadIcon(IDI_ICON1);,/,加载已装载的图片资源,CDialog:OnTimer(nIDEvent);,/OnTimer(),是响应,CDialog,对象产生的,WM_Timer,消息。,nIDE

10、vent,表示要响应,TIMER,事件的,ID,。,20,2,详细设计介绍,编写,OnSelchangeCombo,函数,模块实现:刘若欣,int nIndex=m_eb.GetCurSel();,/GetCurSel,函数用于获取当前光标位置,定义,int,型变量,nIndex,并将得到的光标位置赋给它。,CString strCBText;,/,定义,CString,类变量,strCBText,m_eb.GetLBText(nIndex,strCBText);,/GetLBText,把选中字符赋值给,strCBText,即将光标所在的字符串赋给,strCBText,int nLength=

11、strCBText.GetLength();,/,定义,int,型变量,nLength,并将,strCBText,的长度赋给它,int nLengthLeft=0;,/,定义,int,型变量,nLength,初始值为,0,nLengthLeft=strCBText.Find(:);,/,用,Find,函数获取冒号的位置,21,2,详细设计介绍,编写,OnSelchangeCombo,函数,模块实现:刘若欣,CString strRightString;,/,定义,CString,型变量,strRightString,strRightString=strCBText.Right(nLength-

12、nLengthLeft-1);,/Right,函数从右边第一个字符起获得从右向左,nLength-nLengthLeft-1,个字符。此处获得冒号右面的字符串。,a=atoi(strRightString);,/atoi,函数将字符串转化为整型数。具体为如果第一个非空格字符存在,是数字或者,正负,号则开始做类型转换,之后检测到非数字,(,包括结束符,0),字符时停止转换,返回,整型,数。,SetTimer(1,a,NULL);,/,设置计数器,时间间隔为,a,,单位毫秒,22,2,详细设计介绍,编写,OnButton,函数,模块实现:刘若欣,CFile myfile;,CString file

13、name=“c:,得分榜,.txt”;,myfile.Open(filename,CFile:modeRead);,/,文件打开及打开方式,int filelength=myfile.GetLength();,/,获取文件长度,CString data;,/,定义字符串类,接收数据,char*temp;,/,临时变量,用于,read,函数按字节读取数据,temp=new charfilelength+1;myfile.Read(temp,filelength);,tempfilelength=0;,/,读文件,data=temp;,/,赋值给,data,,等号,=,已经在,CString,类中

14、重载,直接使用,可以实现赋值,delete temp;,GetDlgItem(IDC_STATIC3)-SetWindowText(data);,/,发送到,IDC_STATIC3,23,2,4.,遇到的问题及解决,24,2025/1/4 周六,遇到的问题及解决,在低难度的模式下,鼠标快速多次单击一个有“地鼠”的,Button,,得分会持续增加。,问题一:,“可以刷分了!,233333”,25,2,遇到的问题及解决,解决方法:,当鼠标响应当前的地鼠位置,可以重新运行一边,Ontimer,函数,更新随机地鼠的位置。不过此时需要重新设置时间,否则就会出现地鼠位置突然变化的情况。因为前一个地鼠(,1

15、000ms,)可能在,500ms,被选中,此时地鼠变换位置,就会只停留,500ms,就转换位置了,所以要重新设置时间。,26,2,遇到的问题及解决,由于,rand(),的随机性,会出现,rand()%16,为,0,的情况。在这种情况下,没有任何一个,Button,加载地鼠图标。,问题二:,“什么都没有让宝宝怎么点!?,严重影响游戏体验”,27,2,遇到的问题及解决,解决方法:,加一个循环语句和一个,IF,语句,循环,5,次,当随机数取余为,0,的情况就重新取余,,5,次就大大降低了取余为,0,的情况。,28,2,5.,尚存的不足,29,2025/1/4 周六,尚存的不足,1.UI,有待优化;,

16、2.Button,不能批量定义大小,批量对齐;,3.,尚未完成得分榜的写操作;,4.,30,2,6.,心得体会,31,2025/1/4 周六,心得体会,经过一周多的时间我们完成了一个简单的打地鼠程序,经过这次小组合作我认识到了很多。首先一个明确的目标十分重要,在开始设计之前我们花了很长时间来讨论要做什么,否定了很多不成熟的方案。但是一旦目标定下来是打地鼠后进度就开始变快了,根据组内每个人的特点分配了不同的任务,学习能力比较强的同学负责一些较难的模块,然后每个人将各自负责的部分在组内讲解清楚,真正达到了小组学习的目的。,32,2,心得体会,另外我们发现程序设计中不止需要学习能力,创新能力也很重要

17、,通过网络了解了打地鼠程序的主要思路和一些基本知识后,我们将一部分精力放在了优化程序上,增加一些我们自己希望的功能,删去一些我们认为设计不好的地方,(辩证否定的实质是扬弃,新事物对旧事物既批判又继承,既克服其消极因素又保留其积极因素)。,33,2,心得体会,我们还认识到,一个程序的真正价值是面向使用者,只有充实的内涵没有必要的外观也是不够的,就和这次大作业一样,一个好的程序没有一个好的,PPT,去展示也是不足的,因此我们在展示环节也下了一番功夫,从,PPT,的设计到台上展示的准备我们都充分发挥了小组成员的优势。为了设计出令自己满意的程序,在设计过程中,我们将一些平时没有掌握好的部分又学习了一次,并且在网上查找了很多相关的资料。提高了我们的学习能力和从冗杂信息中找到我们需要的信息的能力。,34,2,心得体会,小组成员一致认为,掌握知识的多少很重要但不是决定因素,学习能力才显示出一个优秀小组的能力,很多代码可能我们自己难以独立实现,但是借助网络和老师给我们的额外资料我们可以完成一些很有意思的设计。这与老师在开课初传输给我们的理念大致相同,我们认为我们从这门课学到了很多。,35,2,谢谢观赏,36,2,

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服