推箱子C课程设计报告.docx
- 文档编号:1589581
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:13
- 大小:74.68KB
推箱子C课程设计报告.docx
《推箱子C课程设计报告.docx》由会员分享,可在线阅读,更多相关《推箱子C课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
推箱子C课程设计报告
程序设计课程设计报告书
学生 :
孟祥煜
指导老师:
曾宇容
课程设计名称:
推箱子小游戏
班级:
软件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、数据结构设计
设置全局变量
定义intv[13][17],用于记录箱子在屏幕中哪个坐标上。
其中“0”表示什么都没有。
定义了intnum_guan指现在得关数,intnum_xiang;箱子得个数,intmove_num人行走得次数;intpush_num人推箱子得次数;定义数组intM[2]表示人所在得位置;M[0] 就是人所在位置得横坐标M[1]就是人所在位置得纵坐标;定义数组intdoor[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()函数return0、即j=control()中得j等于0,游戏进入下一关。
依次类推,当完成14关之后j=1游戏结束。
voidplay()
{
inti,j=0;
ﻩfor(i=1;i<=20;i++)
{
ﻩtem=0;system("cls");//清屏
ﻩif(i==1) chushihua_guan1();//设置关卡1得墙,箱子,人。
门
ﻩelseif(i==2) chushihua_guan2();
ﻩelseif(i==3) chushihua_guan3();
ﻩelseif(i==4)chushihua_guan4();
elseif(i==5)chushihua_guan5();
elseif(i==6)chushihua_guan6();
ﻩelse if(i==7)chushihua_guan7();
ﻩelseif(i==8)chushihua_guan8();
ﻩelseif(i==9)chushihua_guan9();
else if(i==10) chushihua_guan10();
ﻩﻩelseif(i==11)chushihua_guan11();
ﻩelseif(i==12) chushihua_guan12();
ﻩelseif(i==13) chushihua_guan13();
ﻩﻩelseif(i==14) chushihua_guan14();
ﻩj=control();if(j==1){system("cls");return;}
ﻩ}
}
2control()
Control()在这个程序中主要控制游戏中人物与箱子得运动,当玩家在键盘进行各种操作时系统会给出不同得反应。
模块中定义了mand变量,来接收玩家在键盘上得各种操作,首先调用getch()函数为mand赋一个初值mand=(“空字符”)22,进入界面图表初始化,根据num_guan得大小来具体初始化对应得关卡(箱子,人,墙得图标),接着模块进入了“控制阶段”,再次通过getch()函数mand获得一个字符,当mand=”H”(也就就是↑)时人进行向上前进得动作,对应得(“P””K””M”)进行人得↓、←、→操作,以及人得上下左右推箱子得动作,同时当人得前进得方向就是墙或者双层箱子得时候人则不能运动,人推箱子如果箱子得前面就是墙或者箱子得话箱子与人都不能运动。
运动过程中如果玩家输入ctrl+c时游戏此关卡重新开始,同时在control函数中调用一个win变量来判断就是否完成了游戏,调用内嵌函数wancheng()函数,当((win=wancheng())==1&&v[door[0]][door[1]]==ren)时,表示这个关卡已经完成了,return0,即把play()函数中得j赋值等于0,游戏进入下一个关。
游戏过程玩家每操作一步,系统通过控制daying()函数来控制画面中目标得运动,来达到游戏得目得。
intcontrol()
{
intwin;
ﻩint temm;
char mand; //存放接收到命令
while(1)
ﻩ{
mand=getch();//输入一个字符
/*ﻩif(mand==1)
ﻩif(mand==22)
ﻩﻩ{
if(num_guan==1) {system("cls");chushihua_guan1();}
elseif(num_guan==2){system("cls");chushihua_guan2();}
ﻩﻩelseif(num_guan==3){system("cls");chushihua_guan3();}
ﻩﻩﻩelseif(num_guan==4){system("cls");chushihua_guan4();}
ﻩﻩﻩelse if(num_guan==5){system("cls");chushihua_guan5();}
ﻩﻩelseif(num_guan==6){system("cls");chushihua_guan6();}
ﻩﻩﻩelse if(num_guan==7) {system("cls");chushihua_guan7();}
ﻩelse if(num_guan==8){system("cls");chushihua_guan8();}
elseif(num_guan==9){system("cls");chushihua_guan9();}
ﻩelseif(num_guan==10){system("cls");chushihua_guan10();}
ﻩelseif(num_guan==11){system("cls");chushihua_guan11();}
ﻩﻩﻩelseif(num_guan==12){system("cls");chushihua_guan12();}
ﻩelse if(num_guan==1113){system("cls");chushihua_guan13();}
ﻩelseif(num_guan==14){system("cls");chushihua_guan14();}
ﻩﻩ}
ﻩif(mand==-32) //F11,F12:
-123,-122
ﻩﻩ{
ﻩﻩtemm=0;mand=getch();
ﻩif(temm==0&&mand=='H'&&(v[M[0]-1][M[1]]==xiang||v[M[0]-1][M[1]]==oxiang)&&v[M[0]-2][M[1]]==jia) //箱子在人得上边或者 人得上边得箱子已经放好了且人得上面两行就就是箱子得家
ﻩ{v[M[0]-1][M[1]]=ren; //H指得就是向上推箱子到家
ﻩv[M[0]][M[1]]=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 箱子 课程设计 报告