1、推箱子程序的设计与报告程序设计与实验报告 设计容:推箱子 :黄 庭 班级 :电信1101 学号 :1107050123一引言二需求分析与系统设计三 开发技术四程序中的主要模块五. 心得体会六. 程序全文1引言在实际编写程序的过程中,产生的一些疑惑与不解,在同学和老师的帮助下圆满解决,对于老师和同学们的帮助,在此我表示衷心的感。因为一开始构架的问题造成了一些功能的不能实现。经多方努力仍不能解决,留下遗憾,希望随着日后能力的提高能解决今天留下的问题。二需求分析与系统设计2.1 设计目的通过本学期对游戏程序的研究,我们掌握了运用win32来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的
2、小游戏还是很容易让我们掌握的。此次游戏程序设计的目的,主要是通过win32来制作游戏来更好的掌握编程语言。通过win32这个平台,熟习在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百认真的态度来对待。对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来培养自己独立自主的能力。而对于那些相对于麻烦的程序,便需要我们的协作,这样对我们以后进入企业公司发展打下了更多的基础。2.2 设计
3、要求这次课程设计的要求并不像以往那么紧,老师让给了我们充足的时间来制作游戏,虽然是计划做一款较为大众的经典游戏,并且能力有限,但还是对游戏做出了较高的期望,对于功能做出了较多的设想。例如,背景音乐的播放,时间的显示,自动切换关卡,难度的选择等。2.3 界面设计图2.3.1进入后的主界面图2.3.2素材图片集合这个程序是一个益智类的游戏,是一个单机游戏,人物通过推动箱子到达目的地以在游戏中取胜,同一时刻只能有一位玩家进行游戏。图2.3.4英雄榜图2.3.5关于游戏 图2.3.3选择关卡截图2.4 游戏流程 系统流程图:游戏开局出现如图1,然后进行难度的选择,再是关卡的选择,然后就可以游戏了,游戏
4、完成之后会自动切换下一关,游戏者可手动选择结束游戏。三 开发技术3.1 Win32 API 简介 Win32 API即为Microsoft 32位平台的应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。使用Win32 API,应用程序可以充分挖掘Windows的32位操作系统的潜力。 Mircrosoft的所有32位平台都支持统一的API,包括函数、结构、消息、宏及接口。使用 Win32 API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。在具体编程时,
5、程序实现方式的差异依赖于相应平台的底层功能的不同。最显著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在Windows NT操作系统下使用。另外一些主要差别就是系统限制,比如值的围约束,或函数可管理的项目个数等等。 3.2 Win32 API函数分类标准Win32 API函数可以分为以下几类:1、窗口管理2、窗口通用控制3、Shell特性4、图形设备接口5、系统服务6、国际特性7、网络服务 四程序中的主要模块4.1函数原型的一些定义LRESULT CALLBACK WindowProc( HWND hwnd, / handle to window UINT uMsg, /
6、message identifier WPARAM wParam, / first message parameter LPARAM lParam / second message parameter);/窗口过程函数原型BOOL InitWindowsClass(HINSTANCE hInstance);/初始化窗口类BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);/初始化窗口BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam);/对话框过程函数
7、void Show_Image(HBITMAP bmap,int i,int j); /显示单图片void Draw_Map();/作图的函数void Show_Map();/显示地图void Get_Poision(Poision &poision);/人物在哪里的定位4.2创建窗口函数void main() PlaySound(E:2.wav, NULL, SND_FILENAME | SND_ASYNC);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) hWnd=CreateWindow(joe,推箱子,WS_OVERLAPPEDWI
8、NDOW,450,200,325,372,NULL,NULL,hInstance,NULL); if(!hWnd) return FALSE; SetTimer(hWnd, 1, 1, NULL); ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); hInst=hInstance; return TRUE;4.3 地图的输出void Show_Map() int i,j; for(i=0;i10;i+)/1表示墙 0表示通路 2表示箱子 3表示人 4表示目的地 for(j=0;j10;j+) if(Mapij=1) Show_Image(hBm_wa
9、ll,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,32*i); else if(Mapij=0) Show_Image(hBm_floor,32*j,32*i);4.4人物的定位void Get_Poision(Poision &poision) int i=0,j=0; bool flag=FALSE; poision.Hang
10、=0,poision.Lie=0; for(i=0;i10;i+) for(j=0;j10;j+) if(Mapij=3) poision.Hang=i; poision.Lie=j; flag=TRUE; break; if(flag=TRUE) break; 4.5 地图的编写int Map41010=1,1,1,1,1,0,0,0,0,0, /1表示墙 0表示通路 2表示箱子 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,1,4,1, 0,1,1,0,0,0
11、,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表示墙 0表示通路 2表示箱子 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,0,0,0,0,
12、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表示墙 0表示通路 2表示箱子 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,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 ;
13、int Map21010=1,1,1,1,1,1,1,1,1,1, /1表示墙 0表示通路 2表示箱子 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, /1表示墙 0表示通路 2
14、表示箱子 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表示墙 0表示通路 2表示箱子 3表示人 4表示目的地 0,1,1,1,1,1,1,1,0,0, 0,1,0,0,0,0,0,1,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,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1