您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 高级语言程序设计实训报告(参考)
江西科技师范大学实验报告课程系别班级学号姓名报告规格一、实验目的二、实验原理三、实验仪器四、实验方法及步骤五、实验记录及数据处理六、误差分析及问题讨论1.实训一贪吃蛇游戏2.实训二学生成绩管理系统3.4.5.6.7.8.9.10.11.12.13.14.15.目录每次实验课必须带上此本子,以便教师检查预习情况和记录实验原始数据。实验时必须遵守实验规则。用正确的理论指导实践袁必须人人亲自动手实验,但反对盲目乱动,更不能无故损坏仪器设备。这是一份重要的不可多得的自我学习资料袁它将记录着你在大学生涯中的学习和学习成果。请你保留下来,若干年后再翻阅仍将感到十分新鲜,记忆犹新。它将推动你在人生奋斗的道路上永往直前!江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页实训一贪吃蛇游戏一、实训目的和要求根据老师布置的任务,对项目进行需求分析;确定数据结构和算法;画流程图或N-S图并形成相关文档。根据算法编写程序并且调试程序直到程序通过。本程序实现的主要技巧在二维数组的应用上。目的是通过游戏程序增加编程的兴趣,提高编程水平。二、主要仪器设备安装了Windows操作系统、TurboC或VisualC++的计算机。三、实训内容和原理贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。四、实训小结1、功能描述图1贪吃蛇功能模块图贪吃蛇游戏图形驱动开始画面玩游戏过程结束游戏输出得分图形结束江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页2、总体设计(1)功能模块设计①图形驱动功能模块:initgraph(&gd,&gm,c:\\tc)cleardevice()图2图形驱动功能模块流程图②图形结束功能模块:getch()closegraph()图3图形结束功能模块流程图江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页③开始画面功能模块:NYNY图4开始画面功能模块流程图i=50i=600rectangle(i,40,i+10,49)rectangle(i,451,i+10,460)i+=10i=40i=450rectangle(50,i,59,i+10)rectangle(601,i,610,i+10)i+=10setlinestyle(SOLID_LINE,0,THICK_WIDTH)Setcolor(11)江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页④输出成绩功能模块:setfillstyle(SOLID_FILL,YELLOW)bar(50,15,220,35)setcolor(6)settextstyle(0,0,2)sprintf(str,score:%d,score)outtextxy(55,20,str)startend图5输出成绩功能模块流程图江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页⑤游戏结束功能模块:cleardevice()PrScore()setcolor(RED)settextstyle(0,0,4)outtextxy(200,200,GAMEOVER)getch()图6游戏结束功能模块流程图江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页⑥玩游戏过程功能模块:⑥Y⑦①randomize()1!kbhit()food.yes==1food.x=rand()%400+60food.y=rand()%350+60food.x%10!=0)food.x++food.y%10!=0food.y++food.yes=0food.yes=1;snake.life=0;snake.direction=1;snake.x[0]=100;snake.y[0]=100snake.x[1]=110;snake.y[1]=100;snake.node=2;PrScore()初始化蛇的状态⑤①YYNNNNYYY江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页①NYNY②food.yes==0Setcolor(Green)rectangle(food.x,food.y,food.x+10,food.y-10)i=snake.node-1i0snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];i--画出食物的矩形框江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页②NNYNY③snake.directionsnake.x[0]+=10snake.x[0]-=10snake.y[0]-=10snake.y[0]-=10snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]Gameover()snake.life=1i=3isnake.nodei++1234江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页NYY⑦NNYsetcolor(0)rectangle(food.x,food.y,food.x+10,food.y-10)④④food.yes=1;score+=10;PrScore()GameOver();snake.life=1;snake.x[0]55||snake.x[0]595||snake.y[0]55||snake.y[0]455snake.life==1snake.x[0]==food.x&&snake.y[0]==food.ysnake.x[snake.node]=20;snake.y[snake.node]=-20;snake.node++江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页④NYdelay(gamespeed);setcolor(0);rectangle(snake.x[snake.node-1],snake.y[snake.node-1]⑤setcolor(4)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10)i++isnake.nodei=0snake.x[snake.node1]+10,snake.y[snake.node-1]-10)江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页⑤YNYNYNYNYNY⑥图6游戏过程功能模块流程图key=bioskey(0)snake.life==1key==ESCkey==UP&&snake.direction!=4snake.direction=3key==RIGHT&&snake.direction!=2key==LEFT&&snake.direction!=1key==DOWN&&snake.direction!=3snake.direction=1snake.direction=2snake.direction=4end江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页(2)数据结构设计①食物的结构:structFood{intx;inty;intyes;}food;结构体food用于存储食物信息。各字段的值意义如下:x:存放食物的横坐标y:存放食物的纵坐标yes:判断是否要出现食物的变量,yes=0表示,画面中有食物,不需要出现新食物,yes=1表示需要出现新食物②蛇的结构:structSnake{intx[N];inty[N];intnode;intdirection;intlife;}snake;结构体Snake用于存储蛇的基本信息。各字段的值意义如下:x[N]:保存蛇的每一节横坐标y[N]:保存蛇的每一节纵坐标node:存放蛇的节数direction:保存蛇移动的方向life:存放蛇的生命,life=0表示蛇活着,life=1表示蛇死亡(3)函数功能描述①Init()函数原型:voidInit(void)江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页Init()函数为图形驱动,把图形适配器设置为一种图形模式,在默认路径下设置。②Close()函数原型:voidClose(void)Close()函数为图形结束,关闭图形驱动。③DrawK()函数原型:voidDrawK(void)DrawK()函数用于画开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙。④GameOver()函数原型:voidGameOver(void)GameOver()函数用在结束游戏,出现GAMEOVER提示⑤GamePlay()函数原型:voidGamePlay(void)GamePlay()函数用于玩游戏具体过程,使用上下左右方向键控制蛇吃食物。⑥PrScore()函数原型:voidPrScore(void)PrScore()函数用于输出成绩,显示得分。3、程序实现(1)源码分析#defineN200#includegraphics.h#includestdlib.h#includedos.h#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011binti,key;intscore=0;/*得分*/intgamespeed=50000;/*游戏速度自己调整*/structFood江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页{intx;/*食物的横坐标*/inty;/*食物的纵坐标*/intyes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/structSnake{intx[N];inty[N];intnode;/*蛇的节数*/intdirection;/*蛇移动方向*/intlife;/*蛇的生命,0活着,1死亡*/}snake;voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDrawK(void);/*开始画面*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏具体过程*/voidPrScore(void);/*输出成绩*//*主函数*/voidmain(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,c:\\tc);江西科技师范大学实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/voidDrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);/*设置围墙颜色为淡青色*/setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49);/*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i=450;i+=10){rectangle(50,i,59,i+10);/*左边*/rectangle(601,i,610,i+10);/*右边*/}
本文标题:高级语言程序设计实训报告(参考)
链接地址:https://www.777doc.com/doc-6147891 .html