Windows SDK综合编程-扫雷游戏编程.docx_第1页
Windows SDK综合编程-扫雷游戏编程.docx_第2页
Windows SDK综合编程-扫雷游戏编程.docx_第3页
Windows SDK综合编程-扫雷游戏编程.docx_第4页
Windows SDK综合编程-扫雷游戏编程.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

实 验 报 告课程名称: Windows程序设计实验 学生姓名: 学 号: 专业班级: 指导老师: 2013年 6月 3日 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验项目名称Windows SDK综合编程-扫雷游戏编程二、实验目的1、掌握Windows SDK编程;2、掌握Windows API的使用;3、深入体会完整项目的开发过程。三、实验基本原理SDK即software develope kit(软件开发工具包),它包含了进行Windows软件开发的文档和API函数的输入库、头文件(因为API在动态链接库中,这些动态链接库是系统的组成部分因此不用再提供,而输入库和头文件则必须,这样才能在你的程序中使用API函数)。GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。DC即设备上下文,如果GDI是画笔的话DC就是画布。贴图一般的过程为HDC LoadBitmap()CreateCompatibleDC()SelectObject()BitBlt()最终显示图片四、实验步骤1.首先要创建一个新的Windows的窗口。2.以资源的方式加入bmp格式的资源文件。3.其次往客户区贴一张指定的图片贴图位置保证正确。4.定义操作使得点击砖块图区域相应区域识别并重新贴图已完成“翻面操作”。5.加入菜单选择不同的难度,并且可以看到游戏制作人员。6.制定初级雷区中级雷区高级雷区的范围。7.学会重新开始则是随机布雷,并且踩雷结束游戏。8.加入右键标记雷区。9.加入雷数计算代码,使其计算方块周围8个范围内的雷数并且进行显示。10.加入冲雷操作以及双键操作。11.加入计时器,和剩余雷数统计雷数。12.加入笑脸,点击可以重新开始游戏五、实验数据及处理结果布雷BOOL layMines()gameState = 0;openCount = 0; btLandmineMapinfo00=(BYTE)0;DWORD ixMine,iyMine,iMineBomb,icBomb=0,x,y;/RECT rcMine;for(int i=0;imineColNum;i+)for(int j=0;jmineRowNum;j+) btLandmineMapinfoij=(BYTE)0;ixMine=(int)floor(mineColNum/2.0);iyMine=(int)floor(mineRowNum/2.0);iMineBomb=(int)floor(mineBomb/4.0); srand(unsigned)time(NULL);while (icBombiMineBomb) x=rand()%ixMine;y=rand()%iyMine;if (btLandmineMapinfoxy!=0x10) btLandmineMapinfoxy=(BYTE)0x10;icBomb+; icBomb=0;while (icBombiMineBomb) x=rand()%(mineColNum-ixMine)+ixMine;y=rand()%iyMine;if (btLandmineMapinfoxy!=0x10) btLandmineMapinfoxy=(BYTE)0x10;icBomb+;icBomb=0;while (icBombiMineBomb) x=rand()%ixMine;y=rand()%(mineRowNum-iyMine)+iyMine;if (btLandmineMapinfoxy!=0x10) btLandmineMapinfoxy=(BYTE)0x10;icBomb+;icBomb=0;while (icBomb(mineBomb-3*iMineBomb) x=rand()%(mineColNum-ixMine)+ixMine;y=rand()%(mineRowNum-iyMine)+iyMine;if (btLandmineMapinfoxy!=0x10) btLandmineMapinfoxy=(BYTE)0x10;icBomb+;return TRUE;冲雷void pushMine(POINT mousePos)int i,j;POINT p;if(mousePos.x0|mousePos.y0|mousePos.x=mineColNum|mousePos.y=mineRowNum) return;if(btLandmineMapinfomousePos.xmousePos.y=2) btLandmineMapinfomousePos.xmousePos.y=countBomb(mousePos);openCount+; if(btLandmineMapinfomousePos.xmousePos.y!=15) return;else for(i=mousePos.x-1; i=mousePos.x+1; i+)for(j=mousePos.y-1; j=0 & gameState%4=0)if (wParam&MK_RBUTTON|mouseState=DEF_DBBUTTONDOWN)PostMessage(hwnd, WM_USER_DBBUTTONUP, wParam, lParam); elsemouseState = DEF_LBUTTONUP;if(gameState=0)while(btLandmineMapinfomousePos.xmousePos.y=0x10)layMines();SetTimer (hwnd, ID_TIMER, 1000, TimerProc) ;gameState=4;onMouseLButtonClick(hwnd,mousePos);DeleteDC (hdcMem);ReleaseDC(hwnd, hdc);return 0;六、思考讨论题或体会或对改进实验的建议1、游戏中是否有设计自己的结构体?是什么? 消息函数结构体。2、游戏中主要处理了哪些消息? 主要处理WM_消息 例如菜单里用到的WM_COMMAND,窗口创建时的WM_CREATE、刷新的WM_PAINT还有一些基本的鼠标操作处理消息1、游戏中是否有设计自己的结构体?是什么?有,消息结构体。3、编程中你是否有自己的编程习惯?在命名方法是否有自己的考虑?基本就是直接试着来写然后及时发现问题先记下来然后一步步来扩充,当然是先把框架列出来,一部分一部分

温馨提示

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

评论

0/150

提交评论