当前位置:文档之家› 推箱子C课程设计报告

推箱子C课程设计报告

推箱子C课程设计报告
推箱子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”

表示什么都没有。定义了int num_guan指现在得关数,int num_xi

ang;箱子得个数,int move_num人行走得次数;intpush_num

人推箱子得次数;定义数组int M[2]表示人所在得位置;M[0]就是人

所在位置得横坐标M[1]就是人所在位置得纵坐标;定义数组int doo

r[2]表示门所在得坐标,door[0]就是“下一关门”得横坐标,door[1]

就是“下一关门”得纵坐标。

3主函数

下面让我们来瞧瞧主函数得操作流程,主函数首先进入游戏目录,提醒游戏玩家输入对应得数字来进行得对应得操作,如果玩家输入1则

进入游戏第一关,输入2选择关卡进入,输入3显示游戏帮助菜单,帮助

玩家更好得理解这个游戏得规则,输入4退出游戏。进入游戏后,首先调

用chushi1()函数初始化要使用得页面,之后程序进入play()函数,p

lay()函数中通过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游戏结束。

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();

elseif(i==5)chushihua_guan5();

else if(i==6)chushihua_guan6();

?else if(i==7) chushihua_guan7();

?else if(i==8) chushihua_guan8();

?elseif(i==9) chushihua_guan9();

else if(i==10)chushihua_guan10();

??else if(i==11) chushihua_guan11();

?elseif(i==12)chushihua_guan12();

?else if(i==13)chushihua_guan13();

??else if(i==14)chushihua_guan14();

?j=control();if(j==1){system("cls");return ;}

?}

}

2 control()

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)时,表示这个关卡已经完成了,return 0,即把play()函数中得j赋值等于0,游戏进入下一个关。游戏过程玩家每操作一步,系统通过控制daying()函数来控制画面中目标得运动,来达到游戏得目得。

intcontrol()

{

intwin;

?inttemm;

char mand; //存放接收到命令

while(1)

?{

mand=getch(); //输入一个字符

/*?if(mand==1)

?if(mand==22)

??{

if(num_guan==1) {system("cls");chushihua_g uan1();}

elseif(num_guan==2) {system("cls");chushihua_guan2();}

??else if(num_guan==3) {system("cls");chushihua_g

uan3();}

???else if(num_guan==4) {system("cls");chushihua_guan4();}???elseif(num_guan==5) {system("cls");chushihua_guan5();}

??elseif(num_guan==6){system("cls");chushihua_guan6();}

???elseif(num_guan==7){system("cls");chushihua_guan7();}

?else if(num_guan==8) {system("cls");chushihua_guan8();}

else if(num_guan==9) {system("cls");chushihua_guan9();}

?else if(num_guan==10){system("cls");chushihua_g uan10();}

?else if(num_guan==11) {system("cls");chushihua_guan11();}

???else if(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;

???v[M[0]-2][M[1]]=oxiang;

??M[0]=M[0]-1;move_num=move_num+1;push_num=push_num+1;

??temm=temm+1;}

??if(temm==0&&mand=='P'&& (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;temm=temm+1; //P指向下推箱子到家

?v[M[0]][M[1]]=0;

?v[M[0]+2][M[1]]=oxiang;

??M[0]=M[0]+1;move_num=move_num+1;pu

sh_num=push_num+1;}

??if(temm==0&&mand=='K'&&(v[M[0]][M[1]-1]==xiang||v[M[0]][M[1]-1]==oxiang)&& v[M[0]][M[1]-2]==jia) ?{ ?v[M[0]][M[1]-1]=ren; //K指向左推箱子到家

?v[M[0]][M[1]]=0;temm=temm+1;

v[M[0]][M[1]-2]=oxiang;

?M[1]=M[1]-1;move_num=move_num+1;push_num =push_num+1;}

?if(temm==0&&mand=='M'&& (v[M[0]][M[1]+1]==xiang||v[M[0]][M[1]+1]==oxiang)&& v[M[0]][M[1]+2]==jia)

?{ v[M[0]][M[1]+1]=ren;temm=temm+1; //M指向右推箱子到家

?v[M[0]][M[1]]=0;

v[M[0]][M[1]+2]=oxiang;

?M[1]=M[1]+1;move_num=move_num+1;push_num=push_num+1;}//H指人把箱子向上推,不就是推到家

?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]]==0||v[M[0]-2][M[1]]==jia))

?{v[M[0]-1][M[1]]=ren;temm=temm+1;v[M[0]][M[1]]=0;v[M[0]-2][M[1]]=xiang;M[0]=M[0]-1;move_num =move_num+1;push_num=push_num+1;}

?? if(temm==0&&mand=='H' && (v[M[0]-1][M[1]]==0||v[M[0]-1][M[1]]==jia||v[M[0]-1][M[1]]==men))

??{ v[M[0]-1][M[1]]=ren;temm=temm+1;v[M[0]][M[1]]=0;move_num=move_num+1;M[0]=M[0]-1;} ?//人向上走

??if(temm==0&&mand=='P' &&(v[M[0]+1][M[1]]==0||v[M[0]+1][M[1]]==jia||v[M[0]+1][M[1]]==men))

{?v[M[0]+1][M[1]]=ren;temm=temm+1; //人得下面为空或者下面为家或者下面为门得时候向下走

???v[M[0]][M[1]]=0;

?M[0]=M[0]+1;move_num=move_num+1;}

??if(temm==0&&mand=='P'&& (v[M[0]+1][M[1]]==xiang||v[M[0]+1][M[1]]==oxiang)&& (v[M[0]+2][M[1]]==0||v[M[0]+2][M[1]]==jia))

???{ ?v[M[0]+1][M[1]]=ren;//人得下面为箱子或者下面已经有箱子找到家了切下面得下面就是空或者下面得下面就是家,人把箱子向下推,人往下面走

v[M[0]][M[1]]=0;temm=temm+1;

??v[M[0]+2][M[1]]=xiang;

?M[0]=M[0]+1;move_num=move_num+1;push_num=push_num+1;}

???if(temm==0&&mand=='K' && (v[M[0]][M[1]-1]==0||v[M [0]][M[1]-1]==jia||v[M[0]][M[1]-1]==men))

?{ v[M[0]][M[1]-1]=ren;temm=temm+1; //人得左边为空或者左边就是家或者左边就是门得时候人可以往左边走

????v[M[0]][M[1]]=0;

?M[1]=M[1]-1;move_num=move_num+1;}

?if(temm==0&&mand=='K'&&(v[M[0]][M[1]-1]==xiang||v[M[0]][M[1]-1]==oxiang)&& (v[M[0]][M[1]-2]==0||v[M[0]][M[1]-2]==jia))

??{?v[M[0]][M[1]-1]=ren;temm=temm+1;//人得左边就是箱子或者人得左边就是已经找到家得箱子切人得左边得左边就是空或者人得左边得左边就是家得时候箱子可以往左边移动,

?v[M[0]][M[1]]=0;

?v[M[0]][M[1]-2]=xiang;

??M[1]=M[1]-1;move_num=move_num+1;push_nu m=push_num+1;}

?if(temm==0&&mand=='M' &&(v[M[0]][M[1]+1]==0||v[M[0]][M[1]+1]==jia||v[M[0]][M[1]+1]==men))

??{ ?v[M[0]][M[1]+1]=ren;temm=temm+1;v[M[0]][M[1]]=0;M[1]=M[1]+1;move_num=move_num+1;} //人得右边就是空得或者人得右边就是家或者人得右边得门得时候人可以往右边走。?? if(temm==0&&mand=='M'&& (v[M[0]][M[1]+1]==xiang||v[M[0]][M[1]+1]==oxiang) && (v[M[0]][M[1]+2]==0||v[M[0]][M[1]+2]==jia))

??{ v[M[0]][M[1]+1]=ren;temm=temm+1;v[M[0]][M[1]]

=0;v[M[0]][M[1]+2]=xiang; //人得右边就是箱子或者人得右

边就是一个已经找到家得箱子切右边得右边就是空得或者右边得右边就是家得时候可以推箱子

??M[1]=M[1]+1;move_num=move_num+1;push_num=push_num+1;}

?// else if(mand==-122|| mand==-123) ;

?// else;

?}?

?//?elseif(mand==0)

??//mand=getch(); //接收Fn得下一个字符//F1~F10:59~68

??elseif(mand>=2&&mand<=26){if(mand==3)return1;} else;//Ctrl+a~z:1~26当为ctrl+c得时候程序结束

?if(win=wancheng()==0) tem=0;

?system("cls");dayin();

if((win=wancheng())==1&&v[door[0]][door[1]]==ren){Sleep(225);return 0;}}

?return 0;//如果门得坐标与人得坐标相等得时候直接退出此语句,进入下一个程序(俗称下一关)

3 Daying()

Daying函数在这个程序主要在游戏中得功能就是画出游戏中人与箱子与“完成门”家,人得图标与对游戏中得关卡与人走得步数与推箱子得步数进行计数数,根据游戏中玩家得操作随时得对游戏画面进行变换。通过变量i,j来获得men,qiang, oxiang,ren,jia,xiang(分别表示完成门、墙、箱子放在家中、人、家、箱子)得坐标来找到各个变量得位置,从而运用画图函数画出对应得

图标。

voiddayin()

int i,j;

for(i=0;i<=12;i++)

for(j=0;j<=16;j++)

??if(fuben[i][j]==jia&&v[i][j]==0)

??v[i][j]=jia;

for(i=0;i<=12;i++)

{?for(j=0;j<=16;j++)

??{

??if(v[i][j]==qiang){SetConsoleTextAttribute(GetStdHand le(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREG ROUND_INTENSITY);printf("█");}

?else if(v[i][j]==men){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE | FOREGROUND_RED);printf("П");}

?else if(v[i][j]==oxiang){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN);printf("■");}

??else if(v[i][j]==ren){SetConsoleTextAttribute(GetStdHandle(STD _OUTPUT_HANDLE),BACKGROUND_INTENSITY|FOREGROUND _INTENSITY | BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE|FOREGROUND_RED);printf("囧");}

???elseif(v[i][j]==jia){SetConsoleTextAttribute(GetStdHandle(ST D_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_RED);printf("★");}

elseif(v[i][j]==xiang){SetConsoleTextAttribute(GetStd Handle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);printf("■");}

??else{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED |FOREGROUND_GREEN | FOREGROUND_BLUE);printf("");}

}printf("\n");}

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE);

printf("\n\n 关卡%3d步数%3d推箱子次数%3d\n",num_guan,move_num,push_num);

}

4 Wancheng()

Wancheng()函数在这个程序中得功能主要就是判断游戏就是否完成,其中定义了变量n来控制oxiang(进入了目标位置(家)得箱子)得个数,用fuben[i][j]

==men来定义“完成门”,当n等于此关中箱子得个数且v[i][j]=men,即人得位置在“完成门”上得时候return(1)即玩家完成了这个一关,如果完成门在oxiang 或者人不在完成门上则未完成。

int wancheng()

{ int i,j,n=0;

for(i=0;i<=12;i++) for(j=0;j<=16;j++)if(v[i][j]==o xiang) n=n+1;//n就是对进入家得箱子计数

if(n==num_xiang)

?{

??if(tem==0)

?for(i=0;i<=12;i++)

??for(j=0;j<=16;j++)

???if(fuben[i][j]==men)?

?????v[i][j]=men;

tem=tem+1;

??return 1; //正确

?}

else if(v[door[0]][door[1]]==xiang)

{

??v[door[0]][door[1]]=xiang; //错误

?return 0;

?else if(v[door[0]][door[1]]!=ren)

?{

?v[door[0]][door[1]]=0;//错误

return 0;//程序结束

}

return0; //错误

六不足之处

由于技术等原因,有一些代码在效率上还有待提高,功能上有所不足。

七程序特色

程序改变了传统得方式,实现了非黑框得窗口,并且实现了游戏人物得绘制以及运动,关卡得由易到难得逐级推进功能,让游戏变得更加有趣味有难度,从而吸引玩家玩这个游戏。

八总结

通过这从课程,首先真正得感觉到了自己技术得提高,也认识到了自己得不足与编写代码上得不熟练,在很多很多地方也需要花时间去练习,去提升。然后,通过这一次课程设计得经验,我们能够发现,原来我们以前认为得非常难得一些东西在不懈得努力下也就是可以完成得,“世上无难事,只怕有心人。”,只要努力了,都会有收获,同时相信经过这一次课程设计,我们在以后得学习生活中一定会有更大得提升,更大得进步!

c语言课程设计报告·图书管理系统

第一章 §题目描述 图书管理系统设计: 【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。试设计一图书管理系统,使之能提供以下功能: (1)新图书基本信息的输入; (2)图书基本信息的查询; (3)对撤销图书信息的删除; (4)办理借书手续; (5)办理还书手续; 【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同数字代表借还状态。借书和还书手续要注意修改结构体的成员变量存在状态的值。 §算法设计 1.设计思想: 在整个系统编写的过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。 2.实现注释: 这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。可查询图书的在库状态,方便用户进行借书、还书操作。在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。在处理过程中各项可以作为一本图书的不同属性来进行处理。 3.结构体系设计 图:主函数结构;图:新书信息录入流程;图:图书信息查询(管理员)流程;图:图书信息查询(学生)流程;图:图书信息删除流程;图:办理借书手续流程;图:办理还书手续流程; §程序设计及代码分析 1.程序设计: 下面,我大致介绍一下我的系统的主要功能和注意事项: 当运行此程序时,首先进入系统主界面,然后可以选择[1].管理员登陆(密码:123),[2].学生登陆,[0].退出系统; 选择[1]后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。管理员功能菜单中,[1].新书信息录入,[2].图书信息查询,[3].图书信息删除,[4].返回主菜单,[0].退出系统;当出现“请选择”时,输入选项前的数字,输完之后按回车(下同)。首次运行系统需要先选择[1]录入库存书籍信息,图书各信息项须用空格键隔开,输入完毕后信息自动储存并更新至数据库,然后再选择其他操作。当选择[3]时会进入图书信息删除,在这里可以选择删除图书信息等操

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

推箱子游戏报告书

推箱子游戏设计报告书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、设计目的 本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB 开发应用程序的基本方法及基本技巧。 三、游戏介绍 本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,page up 上一关,page down 下一关,Esc 退回。小人移动来推箱子使箱子到达指定位置,如果箱子全部到达指定位置就表示过关 3.1界面设计 3.1.1界面设计原则: 1用户帮助 2向导 3快捷键 4鼠标与键盘对应 5布局合理化 6显示信息一致性 7界面一致性 8美观与协调性 9合理性 10规范性 11易用性 12一般交互 13数据输入 本游戏是一个简单游戏所以只涉及一些简单的界面设计原则.

3.2用户界面 又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。

基于Android推箱子游戏的设计与实现毕业论文

摘要 本系统主要是实现基于Android的推箱子游戏,推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子。这其中也包括很多手机版本的实现,伴随着Android SDK技术的不断发展,一些基于Android应用也不断推陈出新,很快推箱子游戏便进入了千家万户。此Android推箱子游戏是基于Android SDK2.2基础上设计的,主要分为游戏菜单界面、玩家定制功能、游戏数据存储、游戏背景音乐设置、游戏帮助等功能模块的设计与实现,其中游戏菜单界面模块主要是供用户功能选择而用的;玩家定制则主要是通过提供游戏难度选择,使玩家根据自己的情况选择不同的关卡;游戏用户数据存储主要是采用轻量级数据库存储技术存储游戏用户的成绩;游戏背景音乐设置主要是实现用户可以选择自己喜欢的音乐的功能;其次还包括音量的大小开关;用户游戏指南等功能模块。 本系统采用MVC开发模式,使用SQLite数据库存储技术,基于Android SDK2.2开发平台,使用Eclipse+Android SDK2.2+DDMS+DroidDraw作为系统开发、调试的主要工具关键词:Android推箱子游戏 MVC SQLite Android SDK2.2

The Design and Implementation of the PushBox System Based on Android Abstract This system mainly is to realize the pushed box game based on Android ,Pushed box is a section from Japan's oldest game and designed to train people logical thinking ability. Game scene generally are set in the narrow space warehouse, and demanded the box is put to the appointed place. This requires player clever use limited space and channel, reasonable arrangement of the box location and movement order just may complete the task. Along with the computer game development, many lovers of programming based on this game ideas developed out various versions, various types of pushed box. They include a lot of mobile phones version of the realization, accompanied by Android SDK technology unceasing development, some based on Android applications are constantly, quickly pushed box game entered innumberable families. This Android pushed box game is based on SDK2.2 Android based on design, mainly divides into the game menu interface, customization function, game data storage, game background music Settings, games help etc function module design and implementation of the game menu interface module, which is mainly for the user function selection and use, Customization are mainly by providing game difficulty choice, make the player on its own choice of different levels, The game customer data storage is mainly to adopt a lightweight database storage technology memory game user's accomplishments, Game background music Settings is mainly realized the user can choose your favorite music function; Secondly also includes volume size switches, User game guides function modules. The system USES the MVC development pattern, use SQLite database storage technology, based on SDK2.2 development platform, use Android Eclipse SDK2.2 DDMS + + + Android

c语言课程设计报告书--学生成绩管理

C 语言程序设计报告 课题:学生成绩管理 时间:

一、需求分析 任务要求: 自学C语言中有关链表及外部文件的内容,设计出学生成绩管理。具体要求如下: 1.主要功能: (1)能按学期、按班级完成对学生成绩的录入、修改 (2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 (3)能查询学生成绩,不及格科目及学生名单 (4)能按班级输出学生的成绩单 系统功能需求分析: 1、定义一个结构体类型,成员包括学期、班级、各科成绩、建立链表,定义该结构体类型的指针,用于指向各结点; 2、分别建立具有添输入、修改、查询、总分及平均分、排序等功能的子函数,完成相应功能,对程序实现模块化。 二、概要设计 系统总体设计框架: 对程序进行模块化,建立输入、修改、查询、查找和显示功能的子函数,各子函数中运用链表存储数据。 系统功能模块图:

三、详细设计 主要功能模块的算法设计思路如下: 1、输入信息函数 (1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插入的结点输入信息; (4)返回头指针。 2、修改信息 (1)定义指向结构体变量的指针; (2)用指针检验链表中是否有记录,若没记录,出现报错,然后要求重新输入; (3)根据要修改的编号查找对应结点; (4)修改信息;

(5)修改成功。 3、排序函数 (1)定义所要排序的班级和链表的头指针为形参; (2)调用排序函数,把班级和链表的头指针赋给形参; (3)在子函数中进行排序; (4)输出排序结果。 4、显示学生成绩信息(void Disp(Link l)) (1)选择想要查询的项目(学生各科成绩、不及格科目、班级成员);(2)用指针检验是否有记录; (3)若无记录,输出提示信息,返回主函数; 若有记录,移动指针,依次输出记录; 5、查询班级成绩信息(void Find(Link l)) (1)选择所要查询的班级; (2)输入班级: (3)在链表中寻找相应结点; (4)输出结点信息。 以上各个函数的流程图如下:

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

推箱子程序设计报告

程序设计报告 推 箱 子 通信学院 电子信息1204工程班 1207050420 郝国成 一.设计思路 推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技

巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。 设计推箱子这个游戏,目的是将箱子推到指定的空位,以完成游戏。 首先,要在窗口上,绘制地图,画出墙和草地。 然后,要保证人和箱子可以移动,这个就用到了case WM_KEYDOWN函数去控制了。 下来,就是要制定游戏规则,根据游戏规则,箱子可以在空地之间、目的地之间、空地和目的地之间来回移动,。 最后,把全部箱子移动到指定位置才算完成本次游戏,因此箱子每移动一次都必须判断全部箱子当前位置是否到达指定坐标。 而且,只要游戏没有结束,就没有时间的限制。 大体思路确定以后就是要去怎么做,怎么去实现自己的想法。 我是采用二维数组绘制地图的原理,把资源图片一张张绘制到窗口DC上,然后记录人物资源的坐标,通过方向键响应,改变人物坐标,达到控制人物移动的目的。箱子也同样是这个道理。 想好思路以后,就是动手写代码。这期间我又认识了好多新的Windows的函数,不断的修改,使我更能深刻理解到WIN 32 的作用,收获很大。 二.部分代码 // 推箱子.cpp : Defines the entry point for the application. #include "stdafx.h" #include "resource.h" //#include "mmsystem.h"//导入声音头文件

//#pragma comment(lib,"winmm.lib")//导入声音头文件库 #define MAX_LOADSTRING 100 #define width 48 #define heigth 48 typedefstruct { int x; int y; }point; char map1[10][10]= //地图二维数组 { " ####", " ### @#", " # b #", " ## # ###", " # # #*#", " # # b*#", " # b *#", " ########", " " }; char map2[10][10]= //地图二维数组 { "nnnn#####", "nnnn# @#", "###n#bb #", "#*#n# b #", "#*### ###", "#* ##n", "# # #n", "#### #", "nnn#####", " " }; staticintbStarted=0; int a = 0; intaimnum_qj=0; intaimnum=0; intboxoknum_qj=0; charmap_mid[10][10]; char map[10][10];

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

C语言课程设计图书管理系统课程设计报告

C语言课程设计 图书管理系统 Books Management System 学生姓名张朝柱 学院名称徐州工程学院学号140 班级13计转本 专业名称计算机科学与技术 指导教师李子龙 2016年5月10日

一、需求分析 为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、数量、在库状态等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。 二、算法设计: 1.设计思想: 整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2,设计表示: (1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。 (2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。它引用了一个顺序表SL。其他函数调用时只需传入顺序表头即可。 (3)、int main(void);这五个函数时整个图书管理系统的全部菜单函数,Book_Entering();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。Book_Inquire();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作。 (4)、void Book_Inquire(struct SqList &SL);这个函数为顺序表的输出函数,把顺序表的头传给函数后,可输出整个顺序表的所有信息。、

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

JAVA推箱子游戏

淮海工学院计算机工程学院 课程设计报告 设计名称:面向对象课程设计 选题名称:推箱子的设计与实现 系(院):计算机工程学院 设计时间:2014.3.10~2014.4.12 设计地点:软件实验室、教室

(3)功能模块 本程序包括四个功能模块:class mainFrame,class mainpanel,class Sound,class Readmap, 既主面板类,绘图的面板,播放背景音乐,用输入流读取地图文件。class mainpanel 主要是实现地图的初始化以及每一关地图的重载,class Sound主要是播放背景音乐。Adpressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。 表1 成员变量表 成员变量变量类型名称 开始状态Boolean Start 窗口高度int fHeight 窗口宽度int fWidth 计时器Timer timer 延时int delay 开始时间Date starttime 步数int steps 地图容器MapPanel mapPanel 玩法介绍String instruction 开始状态Boolean Start 表2方法表 方法名功能备注 Puzzle() 创建游戏窗口和设置图标 backaction() 后台操作getmap() 返回地图的方法 StartGame() 开始游戏控制,更新开始菜单 endgame() 结束游戏控制弹出结束窗口 getmap()/ 返回地图的方法调用类spite() menuShowClik() 在游戏中显示完整图片调用类class ShowImage actionPerformed() 动作演示 menuExit() 退出游戏 flush() 清空缓存 游戏过程设计 游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的

推箱子游戏详细设计报告

推箱子游戏详细设计报告 一、 引言 在前一阶段(概要设计)中,已解决了实现该游戏需求的程序模块设计问题。包括游戏模块间的关系设计,以及数据结构和模块结构的设计等。在以下的详细设计报告中将对在本阶段中对游戏所做的所有详细设计进行说明。 本阶段依据概要设计的要求,确定应该如何具体地实现所要求的游戏,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。具体包括各功能模块信息的录入和修改以及删除等。 1.2目的 目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出 现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。可以开发青少年学生的智力,又可以防止老年痴呆症。 1.3参考资料 《C 程序设计(第三版)》,谭浩强编,清华大学出版社 《Turbo C 2.0实用大全》,常玉龙等编写,北京航空航天大学出版社 《C 语言趣味程序百例精解》,陈朔鹰 陈英主编,北京理工大学出版社 《C 游戏编程从入门到精通》,浦滨著, 北京希望电子出版社 《C 函数实用手册》,张曜 郭立山 吴天著, 冶金工业出版社 二、总体设计 2.1需求概要 用户在进入游戏后,可以根据自己的想法自由移动箱子,游戏提供自由选关的功能模块,凭借这些模块,玩家可以实现对游戏快速通关! 2.2软件各模块结构 1、 初始化模块:该模块包括和游戏。屏幕初始化用于输出游戏的操作提示,游戏的每一关的初始化 是 初始化模块 每一关的初始化

2、 图画模块:该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、和画目的地。 画墙 画箱子 画图模块 画小人 画目的地 目的地画箱子 3、 移动箱子模块: 空地之间箱子的移动 移动箱子模块 目的地之间箱子的移动 目的地与空地之间的箱子移动

c语言语言课程设计报告

上海应用技术学院 课程设计 2011~ 2012学年第二学期 设计题目成绩记录簿 院(系)计算机科学与信息工程学院 专业计算机应用技术 班级 11104114 学号 1110411414 学生姓名蒋佳琴 设计时间 2012.06.25 -2012.07.06 指导教师马智娴 提交日期 2012.07.06

上海应用技术学院课程设计任务书 指导教师(签名):马智娴教研室主任(签名):马智娴2012年6 月25日2012年6月25日

目录 1 设计目的 (5) 2 功能描述 (5) 2.1模块功能 (5) 2.2流程图 (6) 3 总体设计 (13) 3.1 功能模块设计 (13) 3.2 数据结构设计 (13) 3.3 函数功能描述 (13) 4 程序实现 (14) 4.2 运行结果 (25) 5课程设计总结 (28)

成绩记录簿 1. 设计要求: 基本功能 a) 添加成绩 b) 删除成绩 c) 查询学生成绩 d) 查询班级成绩 e) 退出 拓展功能 a) 写入文件 b) 读取文件 创新(自拟)功能: 程序实现的其它功能由个人自拟。 2. 设计要求具体说明 基本功能: 成绩记录簿中记录以下数据: 学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分; 输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分: 1~ 5之间的实型数。 添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示; 查询(班级或个人)成绩: a) 查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成 的总学分。 b) 查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同 学不同课程在不同分数段分布的人数及百分比。 拓展功能: a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示; b) 每次修改的数据写入文件。 3. 提示 定义合适的结构体类型,使用链表或数组的方式组织数据。

C语言课程设计报告烟花绽放

课程设计报告书设计题目烟花绽放 系别计算机工程系 专业计算机科学与技术 班级 姓名 指导教师 设计任务下达日期2011年 12 月 24 日 设计时间2011年12月26日至 2010年12月30日 课程设计任务书

一、目的和意义 本课程设计是《C语言程序设计》课程的后继教学环节, 通过研究C语言中图形编程技术或者声音控制等其它方面的多媒体编程技术,一方面拓展学生在这些领域的C语言知识,另一方面使学生在运用所学理论知识进行实践开发,更好的培养学生综合学习能力和实践能力。本次课程设计学生可以根据喜好,可以利用复杂的数据类型实现成绩管理系统等小型的综合应用程序。 二、题目(可从下面题目中任选一个) 1、C语言的图形编程应用 设计实现如菜单、图形的显示,再如动画和小游戏。 2、简易电子琴模拟程序的实现 为实现在键盘模拟电子琴设计的程序。由学生自行设计并且实现。 3、成绩管理程序 学生本人设计具体方案,然后改进和编码实现。 三、课程设计报告书应包括的主要内容 1、介绍概要的思路和设计方案,程序的总体功能和模块划分。 2、主要算法的介绍及流程图,主要功能的实现手段的说明文档。 3、对于有设想但最终未实现的功能的大致编程思路的阐述和设计过程中的启发。 四、进度要求 1、设计时间:2011年12月19日至2011年12月25日 2、编写课程设计报告书:2011年12月26日至2011年12月29日 3、提交报告及答辩时间:2011年12月30日 专科 四、进度要求 1、设计时间:2011年12月26日至2011年12月28日 2、编写课程设计报告书:2011年12月29日 3、提交报告及答辩时间:2011年12月30日 目录

推箱子--Java课程设计

《面向对象程序设计》 课程设计报告 题目:经典推箱子趣味游戏设计与实现 院(系):信息科学与工程学院 专业班级:计算机科学与技术1201班 学生姓名:程伟 学号:20121183011 指导教师:吴奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日 华中科技大学武昌分校制

面向对象程序设计课程设计任务书

目录 1需求与总体设计 (1) 1.1需求分析 (1) 1.2总体设计 (2) 2详细设计 (4) 2.1 mainFrame类 (4) 2.2 mainpanel类 (5) 2.3S o u n d类 (7) 2.4 Readmap类 (7) 3 编码实现 (9) 3.1游戏源码 (9) 4系统测试 (42) 总结 (45)

1需求与总体设计 1.1需求分析 1.1.1功能结构图 推箱子游戏的功能结构图如图1.1所示。 在系统中,编写4个Java类:mainFrame,mainpanel,Sound,Readmap;分别对应初始化游戏界面,游戏操作,背景音乐,绘制地图。 图1.1

1.1.2 UML类图 推箱子系统除了上述4个Java类外,还需要Java系统提供的一些重要的类。这些类之间的UML图如图1.2所示。 图1.2 1.2总体设计 1.2.1 mainFrame类 mainFrame类负责创建系统的主窗口。mainFrame类有多种重要类型的对象,这些对象构成了游戏界面的简明与美观,并且通过监听实现方法赋予了这些组件的相应功能。MainFrame类通过调用Readmap类来实现将地图绘制在游戏主界面,通过调用Sound 类来实现对背景音乐的管理,实现音乐开关以及选择上一曲下一曲的操作。 设计中包括了所有你所能直观见到的图形界面,窗体的大小,下拉菜单中的功能菜单,使得玩家能够很直观的见到所有游戏中的功能.界面中有菜单, 包括:"选项""设置音乐""帮助"。按钮包括:"重来""悔一步""第一关""上一关""下一关""最终关""选关""音乐"等。 1.2.2 mainpanel类 Mainpanel类中集成了小人与箱子的移动规则,并且还包含了对键盘操作移动的响应方法。在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物动作会使系统更有效.通过控制人物,箱子,空地,障碍物在数组中的位置的改变来控制移动

2021年推箱子C课程设计报告

程序设计课程设计报告书 欧阳光明(2021.03.07) 学生:孟祥煜 指导老师:曾宇容 课程设计名称:推箱子小游戏 班级:软件11401 一、设计任务 介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方法,显示器中断寄存器的设置、二维数组的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 二、设计目的 训练学生掌握C的数据结构和综合编程能力和游戏开发技巧等应用能力。 初步设想 推箱子是一款经典的益智小游戏,目的是在训练人的逻辑思考能力。在一个狭小的空间中,要求把木箱从起始位置处推放到指定位置。在空间中有地方限制,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推不能拉,所以需要玩家巧妙的利用有限的空间和通道,合理的移动次序和位置,才能完成任务。本

游戏一共分14关,由易到难,每一关都随着关数的增 加来增加难度,从而达到吸引游戏玩家的目的。 三功能 1、菜单功能,玩家通过看目录按对应的键可以进入对应的功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南,4退出游戏。 2 游戏功能:玩家可以通过操纵键盘中的上下左右键进入游戏进行各种操作来完成游戏。 3 循环功能:当玩家正在游戏的时候如果某一步走错了,导致游戏无法完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按Ctrl+V退出游戏。 4顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战的关卡,如果该关是最后一关,则显示通关完成。 三、总体设计 1、功能模块设计 函数功能描述本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。各个模块功能的功能描述如下: (1)初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初始化用于输出欢迎信息和操 作提示,游戏每一关的初始化是构建每一关的关卡。

C推箱子课程设计报告

C推箱子课程设计报告 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

武汉理工大学华夏学院 课程设计报告书 课程名称:软件综合 题目:基于VC++的“推箱子”游戏软件的开发与测试 系名:信息工程系 专业班级: 姓名: 指导教师: 2013 年元月 18日 课程设计任务书 学生姓名:专业班级:软件2101 指导教师:工作单位:信息系计算机教研室 设计题目:基于VC++的“推箱子”游戏软件的开发与测试 初始条件: 1.已完成c语言程序设计、软件工程、数据库概论或数据库技术等课程的学习 2. 系统环境:Intel 奔腾4以上处理器,1G以上内存,40G以上硬盘, Windows编程环境,Visual C++ 编程工具 要求完成的主要任务:(在规定的时间内完成下列任务) (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 主要任务: 系统完成用户登录及管理员增加、删除、修改、查询功能 1.按系统功能进行游戏背景区域(移动区域、围墙)的设计与绘制: 2.根据系统实现的功能,绘出功能图、系统流程图 3.模块调试,运行结果正确,并经教师检查及答辩;

设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下: ①设计任务与要求②总体方案与说明 ③程序主要模块的流程图④问题分析与解决方案的设计思想和改进设想 ⑤系统的调试记录、调试报告(即在调试中遇到的主要问题、解决方法及改进设 想) ⑥小结与体会 附录:①使用说明②参考资料 时间安排:2012年12月29日---2013年元18日(共三周) 指 系主任签字:年月日 目录

相关主题
文本预览
相关文档 最新文档