c++程序设计实践mfc打地鼠.ppt_第1页
c++程序设计实践mfc打地鼠.ppt_第2页
c++程序设计实践mfc打地鼠.ppt_第3页
c++程序设计实践mfc打地鼠.ppt_第4页
c++程序设计实践mfc打地鼠.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 程序设计实践 打 MadeBy陈锴刘若欣王一凡杨仕俊 地 鼠 所有排序均按学号 DEMO 1 题目分析 本游戏是一个基于对话框C 应用程序 在程序的编辑中涉及到MFC控件的编辑和使用 文件的读 消息的响应 本程序可以实现的功能有 1 选择不同的难度开始游戏 2 鼠标击中 地鼠 时得分 1 3 未击中时得分不变 统计未击中次数 1 4 切换难度时得分清零 5 点错5次后显示 GameOver 得分不再增加 提示重选难度进行游戏 6 点击按钮读取txt文件显示得分榜 2 总体设计分析 开始 选择关卡 击中地鼠 得分加一 未击中加一 5次未击中 鼠标点击 3 详细设计分析 详细设计介绍 控件属性模块实现 王一凡 ComboBox PushButton 将准备好的png格式文件上传到在线icon制作网站 http www ico la 详细设计介绍 icon制作模块实现 王一凡 在资源视图中右击icon 选择insert 在弹出的对话框中选择导入 详细设计介绍 icon导入模块实现 王一凡 详细设计介绍 添加变量模块实现 陈锴杨仕俊 public CComboBoxm eb Cstringm select private inta interror CButton PMouse 16 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数据 详细设计介绍 编写OnInitDialog函数模块实现 陈锴杨仕俊 for inti 0 i 16 i PMouse i 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函数模块实现 陈锴杨仕俊 PMouse nowMouse SetIcon 0 SetIcon能将图标自动地放到按钮的上面 缺省时居中放置 如果图标太大 则会自动剪裁 nowMouse rand 16 产生随机数取余PMouse nowMouse 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 newchar filelength 1 myfile Read temp filelength temp filelength 0 读文件data temp 赋值给data 等号 已经在CString类中重载 直接使用 可以实现赋值delete temp GetDlgItem IDC STATIC3 SetWindowText data 发送到IDC STATIC3 4 遇到的问题及解决 在低难度的模式下 鼠标快速多次单击一个有 地鼠 的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的设计到台上展示的准备我们都充分发挥了小组成员的优势 为了设计出令自己满意的程序 在设计过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论