网站大量收购独家精品文档,联系QQ:2885784924

windows大实验报告(MFC扫雷游戏).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows大实验报告(MFC扫雷游戏)

《Windows编程》大作业 题目:基于MFC的扫雷游戏 姓名:******* 学号:********** 班级:********** 专业:软件工程 院系:数学与计算机学院 指导教师:*********** 基于MFC的小游戏实现 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 1.设计目的及要求 1.1设计目的及问题描述 利用VC++程序编写扫雷游戏,以检测自己一个学期对MFC学习的情况,以及了解自己在MFC学习中的不足,巩固和提高自己对MFC的理解和掌握。掌握C++编程和调试的基本技能,进一步提高自己的动手能力,和运用C++解决实际问题的能力。 本次我做的是一个简单的扫雷的游戏,包括计算雷数、时间和扫雷的规则制定。 1.2设计要求 找出所有的非地雷的地方。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。 (1)操作说明: 开局:单击“开”字按钮 挖雷:单击鼠标左键 标记/取消标记:单击鼠标右键 胜利: 所有有雷的格子都被标记,其余格子都打开。胜利后,会升起几颗信号弹,所有雷爆炸。 快捷操作: 一个格子被打开后(显示数字),且周围8个格子已有对应数量的标记。此时,鼠标左右键同时单击数字,周围未标记的格子都会打开。 (2)游戏主要功能: gamebox.cpp (.h) 游戏框架:游戏主要逻辑,动画控制,常量定义 mybitmap.cpp (.h) 位图,按钮 myclock.h 时钟处理 mykey.h 工具包 myqueue.cpp (.h) 数据结构:队列 filereport.cpp (.h) 跟踪打印,用于调试程序 stdafx.h 游戏常量定义 说明文件: (3)制作要点 1. 游戏界面怎样表示(即w*h个格子) 2. 格子的状态表示:打开,被标记 3. 打开一个空格子,与其相连的空格全部打开 4. 信号弹,爆炸效果的动画处理。 5. 对话框的打开,关闭 6. 对话框控件的数据设置,刷新 2.课程设计步骤 (1)位图初始化 bmStart.Init(hInstance,IDB_BITMAP_START); bmStart.SetDevice(hdccanvas,hdcmem); bmStart.InitSizeList(1,PICW,PICH); bmBack.Init(hInstance,IDB_BITMAP_BACK); bmBack.SetDevice(hdccanvas,hdcmem); bmBack.InitSizeList(1,200,200); bmAni.Init(hInstance,IDB_BITMAP_ANI); bmAni.SetDevice(hdccanvas,hdcmem); bmAni.InitSizeList(ANI_PIC_NUM,20,20); bmBomb.Init(hInstance,IDB_BITMAP_BOMB); bmBomb.SetDevice(hdccanvas,hdcmem); bmBomb.InitSizeList(sizeof(bmBomb_w)/sizeof(int),bmBomb_w,bmBomb_h,PIC_HAVE_MASK) (2)定义参数及规格 #define MAP_Y 80 #define TIME_X 260 #define TIME_Y 15 #define TEXT_MINE_X 260 #define TEXT_MINE_Y 45 //初级 中级 高级 enum GAME_LEVEL{ LEVEL0, LEVEL1, LEVEL2, }; //不同级别的地图边长 enum GAME_LEVEL_SIZE{ LEVEL0_SIZE=9, LEVEL1_SIZE=14, LEVEL2_SIZE=20, }; //不同级别 雷的数量 enum MINE_NUM{ MINE_NUM0=10, MINE_NUM1=30, MINE_NUM2=55, }; #define MIN_W 9 #define MIN_H 9 //最大地图 20*20个格子 #define MAX_MAP_W 20 #define MAX_MAP_H 20 #define MAX_NUM (MAX_MAP_W*MAX_MAP_H) //格子状态 : 关闭,打开,标记 enum MINE_STATE{ MINE_CLOSE, MINE_OPEN, MINE_LABEL, MINE_ERROR_OPEN,//有雷的格子,被打开 MINE_ERROR_LABEL,//不是雷的

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档