c语言课程设计说明书。
设计课题: 推箱子游戏
姓名: 张晓雷
学号: 1314101141
班级: 13信息
院系: 信息工程系
学期: 13-14第二学期
指导老师: 韩凤云
2014 年 06 月 17 日。
目录。一、选题的意义 3
二、系统的分析 3
三、系统的实现:流程图 5
四、总结 6
五、参考文献 7
六、附录(程序源**) 8
一、选题的意义。
经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。
通过推箱子课程设计,进一步巩固、加深所学c语言专业的基本理论知识,理论联系实际,进一步培养综合分析问题,解决问题的能力。
利用所学知识,开发小型应用系统,掌握运用c语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
二、系统的分析。
1、系统概述。
游戏的功能描述如下:首先运行游戏并载入相应的地图,屏幕**现一个推箱子的小人,起周围是预制好的地图、围墙、人可以行走的通道、几个可以移动的箱子和游戏胜利结束时安放这些箱子的目标位置。玩家先通过功能按键选择希望到达的关卡,再通过编辑区中的方向键操纵推箱子小人的位置。
当小人靠近箱子并朝箱子位置移动的时候,箱子在其移动方向没有被其他物件所阻碍的情况下可以被移动。当所有箱子被小人移动到指定的安放位置后,则胜利通关进入下一关的游戏。
2、系统构成。
本程序总体大致可分为三大模块,即读入、判断调整、输出。
1) 读入:即设置读入操作把使用者的输入操作符读入程序,并定义变量储存起立为下一步的判断做好准备;
2) 判断调整:这一操作为下一步的调整二维数组内容提供依据,通过大量的判断语句对所有可能出现的情况提供想对应的唯一操作,使用户能树立使用软件并起到规范化输入的目的——当输入不明字符时不作处理。判断结束后,执行相应操作改变数组内容从而改变输出内容,使用户顺利进行下一步操作。
3) 输出:通过刷屏后重新输出从而使背景得以改变,进而等待用户下一步的输入操作。
3、各模块功能。
3.1、定义二维数组ghouse来记录屏幕上各点的状态,char ghouse[20][20];/其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。
3.2、直接写屏函数,很酷的函数哦!
char far *screen=(char far* )0xb8000000;
void putchxy(int y,int x,char ch,char fc,char bc)
screen[(x*160)+(y<<1)+0]=ch;
screen[(x*160)+(y<<1)+1]=(bc*16)+fc;
3.3、在特定的坐标上画人的函数。
void printman(int x,int y)
gotoxy(y,x);
al=02;_cx=01;_ah=0xa;
geninterrupt(0x10);
3.4、在特定的坐标上画人的函数。
void printman(int x,int y)
gotoxy(y,x);
al=02;_cx=01;_ah=0xa;
geninterrupt(0x10);
3.5、按下空格键后,回到本关开头的函数。
void reset(int i)
switch(i)
4、系统的运行环境。
win-tc
三、系统的实现:流程图。否。是。
否。是。
四、总结。为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期一周的c语言课程设计,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。在此次推箱子游戏程序开发过程中,有很多东西值得我们思考并总结。
开发过程大体可分为以下几个步骤: (1)思考总体设计方案:总体结构和模块外部设计,功能分配。
思考要实现整个程序大体需要的几个模块和其中用到的c语言基本操作符、语句等。 (2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。
(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键**。 (4)编辑程序**:
这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。 (5)**的调试:在dev c++环境下输入**并进行调试和正确运行。
在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。 (6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。
c语言是一门计算机基础语言,通过这次的课程设计,对于它的一些特点和算法有了一定程度的了解,并能够做一些中等的题目,但并没有完全掌握。这1周的课程设计正是让我们巩固以前的知识并在此基础上能够有所突破。这次做的是推箱子,对于我来说有一定困难,因为我的c语言基础并不是很过硬,所以在开始我的程序并没有太大的进展,除了一个框架外并无其他任何功能,每天别人在绞尽脑汁想如何做程序的时候,我都会看着自己写的框架发呆,或者做一些与课程无关的事情,开始过的蛮无聊,蛮郁闷的,心情也不是很好。
不过我一直在看课本,重温一下基础知识。最后几天我通过同学的帮助以及通过在网上查资料,终于设计出了比较理想的程序。虽然程序有的是copy的,外形也不如别人的美观,可其中包含了我的心血以及我的理解。
c语言是一门较难的语言,我感觉学的蛮累的,尤其是这1周的课程设计,我更体会到了这一点,虽然我们是在同一条起跑线上学习的,可每个人的能力都是不同的,有人掌握的好,也有人掌握的不是很好。而我属于中等,因此,在做设计的时候,单单靠我自己的能力是不行的,需要靠大家的帮忙,需要运用集体的智慧,需要大家团结合作。所以,通过1个礼拜的努力和同学的帮忙,我终于做出了比较传统的推箱子游戏,在此过程中,我体会到了失败后的失落,同时也体会到了成功后的喜悦,也许在以后的学习生活中我会更加体会到这一点。
五、参考文献。
1、《c程序设计(第三版)》,谭浩强编,清华大学出版社。
2、《turbo c 2.0实用大全》,常玉龙等编写,北京航空航天大学出版社。
3、《c游戏编程从入门到精通》,浦滨著,北京希望电子出版社。
4、《c函数实用手册》,张曜郭立山吴天著,冶金工业出版社。
六、附录(程序源**)
#include <>
#include <>
#include <>
#include <>
#include <>
#include <>
* 定义二维数组ghouse来记录屏幕上各点的状态,其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。 *
char ghouse[20][20];
* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 *
char far *screen=(char far* )0xb8000000;
void putchxy(int y,int x,char ch,char fc,char bc)
screen[(x*160)+(y<<1)+0]=ch;
screen[(x*160)+(y<<1)+1]=(bc*16)+fc;
* 定义判断是否胜利的数据结构 */
typedef struct winer
else* 在特定的坐标上画目的地并用数组记录状态的函数 */
void printwhither(int x,int y)
putchxy(y-1,x-1,'*yellow,black);
ghouse[x][y]='m';
* 在特定的坐标上画人的函数 */
void printman(int x,int y)
gotoxy(y,x);
_al=02;_cx=01;_ah=0xa;
geninterrupt(0x10);
* 在特定的坐标上画箱子在目的地上并用数组记录状态的函数 */
void printboxin(int x,int y)
putchxy(y-1,x-1,10,yellow,black);
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...