课程设计小游戏推箱子

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告

课程名称:面向对象程序设计C++

设计题目:小游戏推箱子

专业:计算机科学与技术

姓名:

学号:

指导教师:李晓虹

2016 年 1 月 1 日

一.需求分析

在实际编写程序的过程中,产生的一些疑惑与不解,在同学和老师的帮助下圆满解决,对于老师和同学们的帮助,在此我表示衷心的感谢。因为一开始构架的问题造成了一些功能的不能实现。经多方努力仍不能解决,留下遗憾,希望随着日后能力的提高能解决今天留下的问题。

通过本学期对游戏程序的研究,我们掌握了运用win32来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。

此次游戏程序设计的目的,主要是通过win32来制作游戏来更好的掌握编程语言。通过win32这个平台,熟习在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。

每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百认真的态度来对待。对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来培养自己独立自主的能力。而对于那些相对于麻烦的程序,便需要我们的协作,这样对我们以后进入企业公司发展打下了更多的基础。

二、系统的主要功能

这次课程设计的要求并不像以往那么紧,老师让给了我们充足的时间来制作游戏,虽然是计划做一款较为大众的经典游戏,并且能力有限,但还是对游戏做出了较高的期望,对于功能做出了较多的设想。例如,背景音乐的播放,时间的显示,自动切换关卡,难度的选择等。

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;

}

六、主要算法设计

void Show_Map()

{

int i,j;

for(i=0;i<10;i++)//1表示墙 0表示通路 2表示箱子 3表示人 4表示目的地

for(j=0;j<10;j++)

if(Map[i][j]==1)

Show_Image(hBm_wall,32*j,32*i);

else if(Map[i][j]==2)

Show_Image(hBm_box,32*j,32*i);

else if(Map[i][j]==3)

Show_Image(hBm_people,32*j,32*i);

else if(Map[i][j]==4)

Show_Image(hBm_dirtion,32*j,32*i);

else if(Map[i][j]==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;i<10;i++)

{

for(j=0;j<10;j++)

{

if(Map[i][j]==3)

{

poision.Hang=i;

poision.Lie=j;

flag=TRUE;

break;

相关文档
最新文档