C推箱子课程设计报告

  • 格式:docx
  • 大小:106.37 KB
  • 文档页数:12

C推箱子课程设计报告

The document was prepared on January 2, 2021 目:基于学

武汉理工大学华夏学院

课程设计报告书

课程名称: 软件综合

系 名: 信息工程系

专业班级: 姓 名:

指导教师:

2013年元月18 H

课程设计任务书

学生姓名: ________________ 专业班级: 软件2101

指导教师: ________ 工作单位:信息系计算机教研室

设计题目:基于VC++的“推箱子”游戏软件的开发与测试

初始条件:

1. 已完成c语言程序设计、软件工程、数据库概论或数据库技术等课程的学习

2. 系统环境:Intel奔腾4以上处理器,1G以上内存,40G以上硬盘,

Windows编程环境,Visual O+编程工具

要求完成白勺主要任务:(在规定的时间内完成下列任务)

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 主要任务:

系统完成用户登录及管理员增加、删除、修改、查询功能

1. 按系统功能进行游戏背景区域(移动区域、围墙)的设计•与绘制:

2. 根据系统实现的功能,绘出功能图、系统流程图

3. 模块调试,运行结果正确,并经教师检查及答辩; 设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:

① 设计任务与要求 ② 总体方案与说明

③程序主要模块的流程图 ④问题分析与解决方案的设计思想和改进设想

⑤ 系统的调试记录、调试报告(即在调试中遇到的主要问题、解决方法及改进设 想)

⑥ 小结与体会

附录:①使用说明 ②参考资料

时间安排:2012年12月29日一-2013年元18日(共三周)

第1天 介绍本次课程设计的目的、要求,介绍MFC AppWizard应用程序框架的简介

第2天〜第5天 介绍MFC中的窗口消息的创建及用,完成游戏背 景区域(移动区域、围墙)的设计与绘制

第6天〜第9天 完成目标区域、小人、箱子的绘制、绘制地图、 加载/更新地图、关卡的设置及系统整合

第10天 系统运行与演示

第11天〜第14天 系统测试与掌握调试的方法和技巧,撰写设计报 告

第15天 按项LI组进行演示与答辩,形成课程设讣报告文 档

指导教师签字: 2012年12月28日

系主任签字: 年 月 日1引言

最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动, 来将箱子推到指定地点

记得儿年前,《推箱子》在机上刮起了一股不小的益智类游戏的旋风,现在许多 资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。 推箱子游戏1981年由今林宏行首创,是在1982年12月由Thinking Rabbit公司首次发 行,名“仓库番”。箱子只可以推,不可以拉,而且一次只能推动一个,胜利条件就是把 所有的箱子都推到目的地。

推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的,乂可以防止老年 痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为

推箱子游戏是LI前比较流行的游戏之一,很多操作系统或者流行软件都会带有这种游戏。 它既能锻炼思维的严密性,乂有很多乐趣。我们团队比较喜欢玩这个游戏,于是备釆用 C++编程语言进行实现。

2项目需求分析

用户可以进行开始游戏,退出游戏,选关,重新开始游戏等操作。有结束提示。 作为一款极为经典的游戏,推箱子吸引了一代代玩家乐此不疲,通过使用Visual C++进行设计,将学习过的知识应用到实际程序中,以便于为以后的进一步学习奠定基 础。

推箱子游戏的设计U标完成一个比较简单的游戏,使之能够实现推箱子游戏的基 本功能,成为一个比较完整的游戏框架。在一个狭小的仓库中,要求把木箱放到指定的位 置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的 空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

在游戏主界面中,会出现一个小人、若干个箱子和箱子放置点。玩家需要利用方向 键控制小人上下左右移动,并推动界面中的箱子到达指定的箱子放置点。

3系统概要设计

3.1功能控制模块

系统功能如图3-1所示。

3.3推箱子游戏具有的功能

3. 3.1能够显示主菜单和界面

游戏需要一共主菜单让玩家进行游戏设置,同时能够把地图文件中的信息转换成为 图像显示在游戏界面上。

3. 3. 2能够实现键盘操作功能

能够接受到键盘驶入的方向键信息,并根据不同的方向键把游戏人物移动到相应的 位置。例如,当玩家单机方向键向上“上”时,如果向上的位置是可以移动的,那么就当 把游戏人物向上西东一个方格。

3. 3. 3能够把放置到位置的箱子进行变色显示

当玩家把箱子推到指定位置的格子时,需要把这个箱子进行变色,这样就能明确的 现实出该箱子已经放置到指定位置。 3. 3.4游戏胜负判断功能

在游戏中,当玩家把所有的箱子都推到指定点时,玩家胜利通过当前游戏关口,进 行下一关口的游戏。如果玩家无法将箱子全部推到指定位置时,玩家失败,玩家可以选择 重新开始进行当前关口的游戏,还是退出游戏。

3.3.5支持关口选择功能

玩家在游戏中可以自行选择需要挑战的关口。当玩家点击菜单中的“关卡选择”, 并在对话框中输入所需要挑战的关口,设置完毕后点击开始即可打开所需关口。

3. 4推箱子功能框架

图3-3功能框架

初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初 始化用于输出操作信息,游戏每一关的初始化时构建每一关的关卡。

画图模块。该模块最要是被其他模块调用,用于画墙、在空地画箱子、画小人、和 画目的地。

移动箱子模块。该模块用于移动箱子,包括H的地之间、空地之间和tl的地与空地 之间箱子的移动

移动小人模块。该模块用于移动人物,包括目的地之间、空地之间和目的地与空地 之间人物的移动

功能控制模块。该模块是儿个功能函数的集合,包括屏幕输出功能、指定位置状态 功能和关卡重置功能。 3.5游戏界面设计

3. 5.1游戏主界面

推箱子游戏主界面设计如图3-4所示

图3-4设计的游戏主界面

3. 5.2游戏菜单与帮助结构设计

图3-5游戏菜单结构

图3-6帮助结构设计

3. 5.3游戏中关卡选择对话框设计

图3-7关卡选择对话框

当玩家在对话框中输入关口数字,并重新点击开始游戏时,游戏会自动选择对应关 口的地图级别开始新游戏。

3. 6游戏的界面实现

在推箱子游戏中,通过如下儿步即可实现游戏的菜单

在推箱子游戏工程的资源中添加一个菜单资源,其属性如表3-1所示:

表3-1资源属性

ID 类别 说明

IDR MAINFRAME 弹出菜单 游戏的主菜单

IDR RESTART 菜单栏 重新开始

IDR SELECT 菜单栏 关卡选择

IDR.EXIT 菜单栏 游戏退出

1给每个菜单栏添加相应函数到CboxManDlg类中。

2菜单响应函数的实现,各类菜单调用响应,要运用到的代码如下:

(1) void CBoxManDlg: :0nExit () pp文件和・ h文件。基类选CDialog,对话框 ID选上面建好的对话框。0K

图3-10添加函数图2

(2) 为编辑框添加一个变量,用来存储编辑框获得的数据。选项卡Member Variables,类名选上面那个对话框的类名,选中编辑框的ID,增加变量

图3T1变量设置

(6)要想在CBoxManDlg类中使用这个对话框类,必须包含头文件:

nclude

最后,选项卡关联函数中调用这个对话框类:void CBoxManDlg: :OnSelect () Debug/", "rb");

如何显示Debug工具栏窗口

① :在任意工具栏的位置,单击鼠标右键,勾选Debug项

② --------------- :Tools >Customize--dToolbars--aDebug--aclose

引申:工具栏和工具条的区别

一个工具栏可以放置多个工具条。

2. 断点调试

F9:设置或去除断点。如果当前行未设置断点,按F9可在当前行设置断点,如果当前行 已设置断点,按F9则为去除断点设置。

Alt+F9:调出断点设置窗口

在这个窗口里可以设置断点,去除所有已经设置的断点或者单个断点,也可以转到已设 置的断点处,通过按钮Edit Code,可以设置需要被计算的表达式,可以设置,监视 (Watch)数组或结构体元素的个数,可以在窗口过程函数中设置断点,可以为任何一个想 要监视(Watch)的消息(Message)设置一个断点。

3. 开始调试

① :Build--Start Debug--Go

② :F5

注:F5有两层含义。对于非调试阶段,按F5用于开始调试。对于调试阶段(已经进入调试 阶段),按F5用于运行程序到下一个断点处

4 •停止调试

一旦按F5之后进入调试阶段,IDE编辑器上就会增加一个Debug菜单选项(里面包含一些 常用调试手段)

这里列出不常见的两个,有Exceptions, Threads, Modules,可以通过点击Modules进入

Module List对话框,在这里可以看到一些模块(Module),如,可以Google的一些信 息。。。这里略过,我也不是很熟悉。。。--b,欢迎大牛补充。。。都说说是怎么用 的。

CD: Debug--dStop Debugging

②:Shift+F5

5.重新开始调试(或者说重头开始调试)

这个功能既可以在调试阶段使用,也可以在非调试阶段使用,用于进入调试阶段。

在调试阶段,它的功能如下:(即不停止调试的情况下)

如果在一个程序里有多个断点,比如断点1、断点2. o o o断点5•首先,按F5调试, 进

入调试阶段,程序首先执行到断点1处,如果再按F5就会执行到断点2处,依次类推, 直到断点5处,如果当程序执行到断点5处,再按F5,则程序不会再中断,程序完全运行 起来。

可是,在调试阶段,如何从断点厂断点5处之间的任意一个断点跳到断点1处去重新执 行呢比如,程序已经执行到断点4处,现在程序员想回到断点1处,重新再查看(监视) 每个断点处的情形(也许是他记性不好,也许是他眼花了,也许是他操作太快,比如多按 了儿下F5键(/_、)……,这种情况大家也碰到过吧,往往很多人选择了,停止调试, 再重新开始进入调试,再重新来一遍,当然,这样可以,只是有点麻烦。。。)

现在,其实还有一种方法。。。我之前也没发现。。。--“在这种情况下,就可以用重 新开始