江南大学人文学院
课程设计报告
2011— 2012学年第 2 学期
课程名称 《C程序设计基础》 设计题目 推箱子游戏 学生姓名 专业班级 指导教师 2012 年 5 月 29
日
江南大学人文学院《程序设计基础C》课程设计报告
目录
1 设计任务书.
1.1题目与要求.
1.2本程序涉及的知识点.
2 设计方案.
2.1设计方案思路 2.2设计方案结构图.
3 算法描述
4 源程序代码设计
5 总结
1
江南大学人文学院《程序设计基础C》课程设计报告
1设计任务书
1.1题目与要求
设计一个推箱子游戏。在设计时必须注意:
①必须有一个存放箱子和搬运工的地图,且地图上有墙壁和通道
②搬运工应当可以在通道上自由行走
③墙壁能够 搬运工和箱子,并且它们互不重合 ④在没有墙壁挡住时,搬运工可以推动箱子行走。 ⑤可以手动结束游戏
⑥在游戏结束时显示失败或胜利的信息
1.2本程序涉及的知识点
C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算 类型(算术运算 逻辑运算 自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构)大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数等。
2 设计方案
2.1设计方案思路
① 考虑到本程序是一个推箱子游戏程序,因此就要有一个或多个适合本游戏
的地图,于是就使的最简洁的二维数组这种方式来表示地图。
② 在二维数组地图中使用一些简单的图形来表示搬运工、箱子和目标位置。 ③ 在游戏中会使用到键盘上的方向键,因此还必须定义一读取键盘码的数。 ④ 在主函数里面实现循环求搬运工和箱子的位移坐标。 ⑤ 最后在屏幕上显示游戏的最后结果。
2.2设计方案结构图
开始设设计地图 2
江南大学人文学院《程序设计基础C》课程设计报告
设计人、箱子图形
定义读取键盘码函数 游戏过程的求位移坐标 游戏结束后显示游戏结果 设计结束
3 算法描述
功能实现的算法,下面是一些游戏步骤的具体操作和功能实现的算法的N-S流程图
3.1在主函数外分别定义了箱子结构体、读取键盘码的共用体、读取键盘码
的函数,从而来实现在游戏中,能够读取到键盘码,以箱子的坐标属性。其中,箱子结构体包含坐标属性int x和int y,键盘码共用体包含unsigned int iKeyInfo和char chKeyBit[2],N-S流程图如下
3
江南大学人文学院《程序设计基础C》课程设计报告
定义箱子结构体 struct Boxss 定义键盘码共用体 union keyboard 定义读取键盘码的函数 int fnGetKey(void) union keyboard uniKey1; bioskey(1)==0;
uniKey1.iKeyInfo=bioskey(0);
uniKey.chKeyBit[0]==0
是 否 return(uniKey1.chKeyBit[1]) return(uniKey.chKeyBit[0])
3.2在主函数里,定义了游戏所需的一些变量、地图、箱子以及实现游戏中的各
个环节中所需的变量。其中x、y为人物移动后坐标,tx、ty为人物移动前坐标:
int iKey,x=11,y=6,tx=11,ty=6; struct Boxss Box[4]; int chMap[10][10]; int i,j;
Box[0].x=13; Box[1].x=11; Box[2].x=14; Box[3].x=18; Box[0].x=8; Box[1].x=7; Box[2].x=13; Box[3].x=7;
3.3在游戏过程中,每移动一步都要重新刷新一次地图,因此,在这里还必须有一
个刷新地图的循环结构,从而来实现在每次移动之后都能刷出新地图。其N-S流程图如下:
4