




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 小游戏推箱子 专 业:计算机科学与技术 姓 名: 学 号: 指导教师: 李 晓 虹 2016 年 1 月 1 日 1 需求分析在实际编写程序的过程中,产生的一些疑惑与不解,在同学和老师的帮助下圆满解决,对于老师和同学们的帮助,在此我表示衷心的感谢。因为一开始构架的问题造成了一些功能的不能实现。经多方努力仍不能解决,留下遗憾,希望随着日后能力的提高能解决今天留下的问题。通过本学期对游戏程序的研究,我们掌握了运用win32来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。此次游戏程序设计的目的,主要是通过win32来制作游戏来更好的掌握编程语言。通过win32这个平台,熟习在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百认真的态度来对待。对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来培养自己独立自主的能力。而对于那些相对于麻烦的程序,便需要我们的协作,这样对我们以后进入企业公司发展打下了更多的基础。2、 系统的主要功能这次课程设计的要求并不像以往那么紧,老师让给了我们充足的时间来制作游戏,虽然是计划做一款较为大众的经典游戏,并且能力有限,但还是对游戏做出了较高的期望,对于功能做出了较多的设想。例如,背景音乐的播放,时间的显示,自动切换关卡,难度的选择等。2.1 界面设计图2.2.1进入后的主界面图2.2.2素材图片集合 这个程序是一个益智类的游戏,是一个单机游戏,人物通过推动箱子到达目的地以在游戏中取胜,同一时刻只能有一位玩家进行游戏。图2.2.3英雄榜图2.2.4关于游戏 图2.2.5选择关卡截图三、流程图 系统流程图:游戏开始选择关卡选择关卡进行游戏进行游戏自动切换下一关完成游戏完成游戏结束游戏 游戏开局出现如图1,然后进行难度的选择,再是关卡的选择,然后就可以游戏了,游戏完成之后会自动切换下一关,游戏者可手动选择结束游戏。四、数据结构设计1、 窗口管理2、 窗口通用控制3、 Shell特性4、 图形设备接口5、 系统服务6、 国际特性7、 网络服务 LRESULT CALLBACK WindowProc( HWND hwnd, / handle to window UINT uMsg, / 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);/对话框过程函数void Show_Image(HBITMAP bmap,int i,int j); /显示单张图片void Draw_Map();/作图的函数void Show_Map();/显示地图void Get_Poision(Poision &poision);/人物在哪里的定位五、类设计void main()PlaySound(E:2.wav, 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=hInstance;return TRUE;6、 主要算法设计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_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,32*i);else if(Mapij=0)Show_Image(hBm_floor,32*j,32*i);void Get_Poision(Poision &poision)int i=0,j=0;bool flag=FALSE;poision.Hang=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;7、 主要代码#include#include#include#includeMenu.h#includeMap.h#include #pragma comment(lib,winmm.lib)/*全局变量的一些定义*/HMENU hmenu,haddmenu;HWND hWnd;HDC hdc,hDCMem;BITMAP bm;HBITMAP hBm_people,hBm_box,hBm_wall,hBm_dirtion,hBm_floor;HINSTANCE hInst;int Count=0;char lpszMenuName=Menu;char lpszClassName=joe;typedef structint Hang;int Lie;Poision;Poision poision;int choose=1;/*/*函数原型的一些定义*/LRESULT CALLBACK WindowProc( HWND hwnd, / handle to window UINT uMsg, / 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);/对话框过程函数void Show_Image(HBITMAP bmap,int i,int j); /显示单张图片void Draw_Map();/作图的函数void Show_Map();/显示地图void Get_Poision(Poision &poision);/人物在哪里的定位/*/*/*WinMain函数*/*/int WINAPI WinMain( HINSTANCE hInstance, / handle to current instance HINSTANCE hPrevInstance, / handle to previous instance LPSTR lpCmdLine, / command line int nCmdShow / show state)MSG Message;HACCEL hAccel; if(!InitWindowsClass(hInstance) return FALSE;/初始化窗口类if(!InitWindows(hInstance,nCmdShow) return FALSE;/创建窗口hAccel=LoadAccelerators(hInstance,lpszMenuName);/*加载加速键资源*/while(GetMessage(&Message,NULL,0,0)if(!TranslateAccelerator(hWnd,hAccel,&Message)TranslateMessage(&Message);DispatchMessage(&Message);return Message.wParam;/*/*初始化类函数*/*/BOOL InitWindowsClass(HINSTANCE hInstance)WNDCLASS WndClass;WndClass.cbClsExtra=0;WndClass.cbWndExtra=0;WndClass.hbrBackground=(HBRUSH)GetStockObject(DKGRAY_BRUSH);WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);WndClass.hIcon=LoadIcon(NULL,boxprogram);WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WindowProc;WndClass.lpszClassName=lpszClassName;WndClass.lpszMenuName=lpszMenuName;/加载窗口类菜单WndClass.style=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 FALSE;return TRUE;/*/*创建窗口函数*/*/void main()PlaySound(E:2.wav, 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=hInstance;return TRUE;/*/*窗口过程函数*/*/LRESULT CALLBACK WindowProc( HWND hwnd, / handle to window UINT uMsg, / message identifier WPARAM wParam, / first message parameter LPARAM lParam / second message parameter)int i=0,j=0;PAINTSTRUCT ps;/定义指向柏涵绘图信息的结构体变量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,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,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 ;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表示箱子 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无线通信工程师考试题及答案
- 2025年投资理财师考试试卷及答案
- 2025年卫生政策与公共健康管理专业综合素质测试卷及答案
- Lactaroviolin-生命科学试剂-MCE
- 2025年民族文化保护与传承考试试卷及答案
- 2025年国际商务沟通与协调考试试卷及答案
- 2025年广告传播学考试试卷及答案
- 2025年工程管理师考试试题及答案
- 金融服务投资经验证明书(7篇)
- 促进计量智能化转型实施方案
- 2025-2030石油管道行业市场深度调研及竞争格局与投资研究报告
- 冬季冰面勘察中高密度电法的应用与效果评估
- 腹部超声检查规范指南
- 2025年护士执业资格考试题库(老年护理学)历年真题与模拟试题汇编
- 网络内容运营的策略与方法
- 第三方支付AI应用企业制定与实施新质生产力战略研究报告
- 高考期间走读学生安全协议书
- 成人重症患者颅内压增高防控护理专家共识(2024版)解读
- 大型医疗设备培训
- 2024年四川乐山中考满分作文《有幸被照亮亦想成为光》
- 电气CAD项目化教程 课件全套 万胜前 0.1 说课 CAD- 5 电气平面布置图的绘制与识图
评论
0/150
提交评论