ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:124.84KB ,
资源ID:17634071      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17634071.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(推箱子程序设计与报告Word文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

推箱子程序设计与报告Word文档格式.docx

1、图素材图片集合这个程序是一个益智类的游戏,是一个单机游戏,人物通过 推动箱子到达目的地以在游戏中取胜,同一时刻只能有一位玩家 进行游戏。图英雄榜图关于游戏游戏流程系统流程图:游戏开始选择关卡图选择关卡截图游戏开局出现如图 1,然后进行难度的选择,再是关卡的选择,然后就可以游戏了, 游戏完成之后会自动切换下一关,游戏者可手动选择结束游戏。Win32 API 简介Win32 API 即为 Microsoft 32 位平台的应用程序编程接口 ( Application Programming Interface )。所有在 Win32 平台上运行 的应用程序都可以调用这些函数。 使用 Win32 A

2、PI ,应用程序可 以充分挖掘 Windows 的 32 位操作系统的潜力。 Mircrosoft 的所有 32 位平台都支持统一的 API ,包括函数、结构、消息、宏及接口。 使用 Win32 API 不但可以开发出在各种平台上都能成功运行的应用 程序,而且也可以充分利用每个平台特有的功能和属性。 在具体 编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。 最 显著的差异是某些函数只能在更强大的平台上实现其功能。 例如,安 全函数只能在 Windows NT 操作系统下使用。另外一些主要差别就 是系统限制,比如值的范围约束,或函数可管理的项目个数等等。Win32 API 函数分类标准

3、 Win32 API 函数可以分为以下几类:1、窗口管理2、窗口通用控制3、 Shell 特性4、图形设备接口5、系统服务6、国际特性7、网络服务函数原型的一些定义LRESULT CALLBACK WindowProc(HWND hwnd, / handle to windowUINT uMsg, / message identifierWPARAM wParam, / first message parameterLPARAM lParam / second message parameter);/ 窗口过程函数原型BOOL InitWindowsClass(HINSTANCE hInsta

4、nce);/ 初始化窗口类BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);/ 初始化窗口BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam);/ 对话框过程函数void Show_Image(HBITMAP bmap,int i,int j); / 显示单张图片void Draw_Map();/ 作图的函数void Show_Map();/ 显示地图void Get_Poision(Poision &poision);/ 人物在哪里的定位创建窗口函

5、数void main()PlaySound(E:, NULL, SND_FILENAME | SND_ASYNC);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) hWnd=CreateWindow(joe, 推箱子 ,WS_OVERLAPPEDWINDOW,450,200,325,372,NULL,NULL,hInstance,NULL);if(!hWnd)return FALSE;SetTimer(hWnd, 1, 1, NULL);ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); hInst

6、=hInstance; return TRUE;地图的输出void Show_Map()int i,j;for(i=0;i10;i+)/1 表示墙 0 表示通路 2 表示箱子 3 表示人 4 表示 目的地for(j=0;jj+) if(Mapij=1)Show_Image(hBm_wall,32*j,32*i);else if(Mapij=2) Show_Image(hBm_box,32*j,32*i);else if(Mapij=3) Show_Image(hBm_people,32*j,32*i);else if(Mapij=4) Show_Image(hBm_dirtion,32*j,3

7、2*i);else if(Mapij=0) Show_Image(hBm_floor,32*j,32*i);人物的定位poision)int i=0,j=0;bool flag=FALSE;=0,=0;i+) for(j=0;j+) if(Mapij=3)=i;=j;flag=TRUE;break;if(flag=TRUE)地图的编写int Map41010=1,1,1,1,1,0,0,0,0,0, /1 示箱子 3 表示人 4 表示目的地 1,3,0,0,1,0,0,0,0,0, 1,0,2,2,1,0,0,1,1,1, 1,0,2,0,1,0,0,1,4,1, 1,1,1,0,1,1,1,

8、1,4,1, 0,1,1,0,0,0,0,0,4,1, 0,1,0,0,0,1,0,0,0,1, 0,1,0,0,0,1,1,1,1,1, 0,1,0,0,0,1,0,0,0,1, 0,1,1,1,1,1,0,0,0,0 ;int Map51010=1,1,1,1,1,1,1,1,1,1, /1 箱子 3 表示人 4 表示目的地 1,0,0,0,1,0,0,0,0,1, 1,0,3,0,1,4,0,0,4,1, 1,0,2,0,1,0,0,1,0,1, 1,0,1,0,0,0,0,0,0,1, 1,0,0,2,0,0,0,0,0,1, 1,0,0,0,1,0,0,0,0,1, 1,0,0,0,

9、0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,1 ;int Map11010=1,1,1,1,1,1,1,1,1,1, /1 箱子 3 表示人 4 表示目的地 1,0,0,0,1,0,0,0,0,1, 1,0,3,0,1,4,0,0,4,1, 1,0,2,0,1,0,0,1,0,1, 1,0,1,0,0,0,0,0,0,1, 1,0,0,2,0,0,0,0,0,1, 1,0,0,0,1,0,0,0,0,1,表示墙 0 表示通路 2 表表示墙 0 表示通路 2 表示1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0

10、,1, 1,1,1,1,1,1,1,1,1,1 ;int Map21010=1,1,1,1,1,1,1,1,1,1, /1 箱子 3 表示人 4 表示目的地 1,0,0,0,1,0,0,0,0,1, 1,0,3,0,0,0,0,0,0,1, 1,0,2,0,1,1,0,0,0,1, 1,0,0,0,4,1,0,0,0,1, 1,0,0,2,1,1,0,0,0,1, 1,0,0,0,0,0,1,4,0,1, 1,0,0,0,0,0,0,1,0,1, 1,0,0,0,0,0,0,0,1,1, 1,1,1,1,1,1,1,1,1,1 ;int Map31010=1,1,1,1,1,1,1,1,1,1

11、, /1 箱子 3 表示人 4 表示目的地 1,0,0,0,1,0,0,0,0,1, 1,0,3,0,0,0,0,2,0,1, 1,0,0,0,0,1,0,0,0,1, 1,0,0,0,1,0,0,0,0,1, 1,0,2,0,0,0,0,0,0,1, 1,0,0,1,0,0,1,4,0,1, 1,0,1,4,0,0,0,1,0,1, 1,1,0,0,0,0,0,0,1,1, 1,1,1,1,1,1,1,1,1,1 ;int Map1010=0,1,1,1,1,1,1,1,0,0, /1 箱子 3 表示人 4 表示目的地 0,1,1,1,1,1,1,1,0,0, 0,1,0,0,0,0,0,1

12、,1,1, 1,1,2,1,1,1,0,0,0,1, 1,0,3,0,2,0,0,2,0,1, 1,0,0,0,1,0,0,0,1,1, 1,0,0,0,1,0,0,0,1,1, 1,0,4,4,1,0,2,0,1,1, 1,1,4,4,1,0,0,0,1,0, 0,1,1,1,1,1,1,1,1,0 ;通过调用 playsound 实现背景音乐case IDM_TOOL:五 心得体会通过一个学期的学习实践,我掌握了一些比较基础的编程方 法。在实际操作上有了很大程度的提高,在听课以及与同学交流 的过程中,受益匪浅,感悟颇多。看似简单的编程游戏背后, 确实异常复杂的算法。 在网上参考了 一些类似

13、的逻辑算法和代码, 并在前人的基础上进行拓展与改编。 同 时也让我更认识到了自身学习的不足之处, 也更进一步产生了对游戏 开发的兴趣。游戏开发是一个创新的过程,由于能力欠缺,仅仅做了 一个众所周知的经典项目。希望日后能力提高了,能做出更加复杂, 细致的好游戏。第六章 程序全文#include #include #pragma comment(lib,)全局变量的一些定义HMENU hmenu,haddmenu;HWND hWnd;HDC hdc,hDCMem;BITMAP bm;HBITMAP hBm_people,hBm_box,hBm_wall,hBm_dirtion,hBm_floor;

14、HINSTANCE hInst;int Count=0;char lpszMenuName=Menu;char lpszClassName=typedef structint Hang;int Lie;Poision;Poision poision;int choose=1;/*函数原型的一些定义 */对话 框过程函数/*/*WinMain 函数 */*int WINAPI WinMain(HINSTANCE hInstance, / handle to current instance HINSTANCE hPrevInstance, / handle to previous instanc

15、e LPSTR lpCmdLine, / command lineint nCmdShow / show stateMSG Message;HACCEL hAccel;InitWindowsClass(hInstance) return FALSE;/InitWindows(hInstance,nCmdShow) return FALSE;hAccel=LoadAccelerators(hInstance,lpszMenuName);/* while(GetMessage(&Message,NULL,0,0) if(!TranslateAccelerator(hWnd,hAccel,&Mess

16、age) TranslateMessage(&Message);DispatchMessage(&return ;初始化窗口类创建窗口加载加速键资源 */*/* 初始化类函数 */BOOL InitWindowsClass(HINSTANCE hInstance)WNDCLASS WndClass;=0;=(HBRUSH)GetStockObject(DKGRAY_BRUSH); =LoadCursor(NULL,IDC_ARROW);=LoadIcon(NULL,boxprogram=hInstance;=WindowProc;=lpszClassName;=lpszMenuName;/ 加

17、载窗口类菜单=CS_HREDRAW | CS_VREDRAW;hBm_floor=LoadBitmap(hInstance,FLOOR hBm_people=LoadBitmap(hInstance,PEOPLE hBm_box=LoadBitmap(hInstance,BOX hBm_dirtion=LoadBitmap(hInstance,DIRTION hBm_wall=LoadBitmap(hInstance,WALL if(!RegisterClass(&WndClass)MessageBeep(0);return TRUE;/ 箱子/ 墙地板小人目的地/* 创建窗口函数 */ 推箱

18、子 SetTimer(hWnd, 1, 1, NULL); ShowWindow(hWnd,nCmdShow); /*/ /* 窗口过程函数 */ /*/LRESULT CALLBACK WindowProc( HWND hwnd, / handle to window UINT uMsg, / message identifierWPARAM wParam, / first message parameter LPARAM lParam / second message parameterPAINTSTRUCT ps;/ 定义指向柏涵绘图信息的结构体变量switch(uMsg)case WM

19、_PAINT:if(Count=2) YouCount=0;MessageBox(hwnd,Congratulations, success ! win,MB_OK);if(choose=1)j+)Mapij=Map2ij;InvalidateRect(hWnd,NULL,1);/ 刷新整个界面 else if(choose=2)Mapij=Map3ij;/*else if(choose=3)i+) for(j=0;Mapij=Map4ij;*/hdc=BeginPaint(hwnd,&ps);SetMapMode(hdc,MM_TEXT);Show_Map();EndPaint(hwnd,&

20、return 0;case WM_CREATE:/hdc=GetDC(hwnd); / 获取设备环境句柄 hDCMem=CreateCompatibleDC(hdc);/ 内存设备环境句柄 /ReleaseDC(hwnd,hdc); / 释放设备环境句柄 return 0;case WM_COMMAND:switch(LOWORD(wParam)case IDM_EXIT: SendMessage(hwnd,WM_DESTROY,0,0); break;case IDM_RESTART:switch(choose)case 1:j+) Mapij=Map1ij;case 2:case 3:ca

21、se 4:case 5:j+) Mapij=Map3ij;InvalidateRect(hwnd,NULL,1);/ 刷新整个界面case IDM_HELP:DialogBox(hInst/* 当 前 窗 口 的 实 例 句 柄 */,About,hWnd,(DLGPROC)DlgProc);case WM_TIMER:if( wParam = 1 )char buffer100;SYSTEMTIME tmp;char *WeekName7 = 星期日 星期一 星期二 星期三 星期四 星期五 星期六 ;GetLocalTime(&tmp);sprintf(buffer, %04d 年 %02d 月 %02d 日 %02d:%02d:%02d %s %04d, ,WeekName, ;SetWindowText(hWnd, buffer ); break;case IDM_RANGE: DialogBox(hInst,Rangecase IDM_CHOOSE:CHOOSEcase WM_KEYDOW

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1