2021年推箱子C课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计课程设计报告书
欧阳光明(2021.03.07)
学生:孟祥煜
指导老师:曾宇容
课程设计名称:推箱子小游戏
班级:软件11401
一、设计任务
介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方法,显示器中断寄存器的设置、二维数组的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。
二、设计目的
训练学生掌握C的数据结构和综合编程能力和游戏开发技巧等应用能力。
初步设想
推箱子是一款经典的益智小游戏,目的是在训练人的逻辑思考能力。在一个狭小的空间中,要求把木箱从起始位置处推放到指定位置。在空间中有地方限制,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推不能拉,所以需要玩家巧妙的利用有限的空间和通道,合理的移动次序和位置,才能完成任务。本
游戏一共分14关,由易到难,每一关都随着关数的增
加来增加难度,从而达到吸引游戏玩家的目的。
三功能
1、菜单功能,玩家通过看目录按对应的键可以进入对应的功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南,4退出游戏。
2 游戏功能:玩家可以通过操纵键盘中的上下左右键进入游戏进行各种操作来完成游戏。
3 循环功能:当玩家正在游戏的时候如果某一步走错了,导致游戏无法完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按Ctrl+V退出游戏。
4顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战的关卡,如果该关是最后一关,则显示通关完成。
三、总体设计
1、功能模块设计
函数功能描述本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。各个模块功能的功能描述如下:
(1)初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初始化用于输出欢迎信息和操
作提示,游戏每一关的初始化是构建每一关的关卡。
(2)画图模块。该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。(3)移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间箱子的移动。
(4)移动小人模块。该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。(5)功能控制模块。该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。
任务执行流程图
数据流程图
游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的任何时候按Esc键退出。如果游戏无成功希望,可以按CTRI+V回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一
关,则显示通关信息,提示游戏结束。
小人移动流程图
小人移动的方向有4个,move()函数(处理小人移动的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。首先判断小人移动的方向,然后根据小人所处世的当前状态、下一步状态或者下下一步状态进行适当的处理。
2、数据结构设计
设置全局变量
定义int v[13][17],用于记录箱子在屏幕中哪个坐标上。
其中“0”表示什么都没有。定义了int num_guan指现在的关数,int num_xiang;箱子的个数,int move_num人行走的次数;int push_num人推箱子的次数;定义数组int M[2]表示人所在的位置; M[0] 是人所在位置的横坐标M[1]是人所在位置的纵坐标;定义数组int door[2]表示门所在的坐标,door[0]是“下一关门”的横坐标,door[1]是“下一关门”的纵坐标。
3主函数
下面让我们来看看主函数的操作流程,主函数首先进入游戏目录,提醒游戏玩家输入对应的数字来进行的对应的操作,如果玩家输入1则进入游戏第一关,输入2选择关卡进入,输入3显示游戏帮助菜单,帮助玩家更
好的理解这个游戏的规则,输入4退出游戏。进入游戏
后,首先调用chushi1()函数初始化要使用的页面,之后
程序进入play()函数,play()函数中通过if语句通过判断i
的值来初始化不同的关卡(设置好关卡的人,箱子,箱
子的目的地,门),接着程序进入control函数通过获取
玩家在键盘上的操作来分别对游戏人物进行操作,最后
通过wancheng函数来对操作进行判断,如果判断成功的
话则进入下一关游戏。反之则失败。一直通过到最后一
个则通关成功。
四代码设计(或编程)
①单个模块或函数处理
将整个系统程序分解为各个单独的模块,即C的函数,各模
块可单独编译;
②整个程序的联调
在各个模块基本的单独编译通过后,用主函数将他们集成在一起,实现调用,并进行输出数据的可靠性、输入数据及系统的容错性测试。
五程序说明书
功能模块
1.play()
2.control()
3.Daying()
4.Wancheng()
解析
1. play()
play()函数在这个程序中的功能主要是按1进入游戏系统后自动按照顺序进行游戏和完成每一关游戏后进入下一关关卡,其中变量i控制关卡的关数,j控制进入下一关,首先利用if语句将i从一开始,初始化完成第一关,通过play()函数中的内嵌函数control()函数来控制游戏中人和箱子的各种操作,当过关了control()函数return 0.即j=control()中的j等于0,游戏进入下一关。依次类推,当完成14关之后j=1游戏结束。
void play()
{
int i,j=0;
for(i=1;i<=20;i++)
{
tem=0;system("cls");//清屏
if(i==1) chushihua_guan1(); //设置关卡1的墙,箱子,人。门
else if(i==2) chushihua_guan2();
else if(i==3) chushihua_guan3();
else if(i==4) chushihua_guan4();
else if(i==5) chushihua_guan5();