您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 09级高级语言程序设计实训报告 2
江西科技师范学院实验报告课程高级语言程序课程设计系别数计学院班级09计算机科学与技术2班学号20091626姓名王铭报告规格一、实验目的二、实验原理三、实验仪器四、实验方法及步骤五、实验记录及数据处理六、误差分析及问题讨论1.实验一.贪吃蛇游戏2.实验二.学生成绩管理系统3.4.5.6.7.8.9.10.11.12.13.14.15.目录每次实验课必须带上此本子,以便教师检查预习情况和记录实验原始数据。实验时必须遵守实验规则。用正确的理论指导实践袁必须人人亲自动手实验,但反对盲目乱动,更不能无故损坏仪器设备。这是一份重要的不可多得的自我学习资料袁它将记录着你在大学生涯中的学习和学习成果。请你保留下来,若干年后再翻阅仍将感到十分新鲜,记忆犹新。它将推动你在人生奋斗的道路上永往直前!江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页实训一贪吃蛇游戏一、实训目的和要求根据老师布置的任务,对项目进行需求分析;确定数据结构和算法;画流程图或N-S图并形成相关文档。根据算法编写程序并且调试程序直到程序通过。本程序实现的主要技巧在二维数组的应用上。目的是通过游戏程序增加编程的兴趣,提高编程水平。二、主要仪器设备安装了Windows操作系统、TurboC或VisualC++的计算机。三、实训内容和原理贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。四、实训小结1、功能描述图1.功能描述图图形驱动开始画面图形结束游戏结束输出成绩玩游戏过程游戏模块江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页(1)图形驱动。(2)开始游戏。通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,接着又出现食物,等待被蛇吃掉(3)图形结束。蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束(4)游戏结束。(5)输出成绩。蛇吃掉一个食物加十分,游戏结束后输出成绩2、总体设计(1)功能模块设计1).主控函数main()执行流程:载入游戏并初始化GamebeginInitswitch(snake.direction){case1:snake.x[0]+=10;break;case2:snake.x[0]-=10;break;case3:snake.y[0]-=10;break;case4:snake.y[0]+=10;break;}NOYES12江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页图2.主函数流程图2)图形驱动功能模块:图形驱动模块主要实现游戏的载入和初始化NoYesYesfood.yes=1if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])if(snake.x[0]55||snake.x[0]595||snake.y[0]55||snake.y[0]455)DiedPrintscoreGameoverNoif(snake.x[0]==food.x&&snake.y[0]==food.y)21江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页图3.图形驱动流程图3)开始画面功能模块:设置前景色setbkcolor(LIGHTGREEN);Begin设置背景色setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);设置线形1清屏initgraph(&gd,&gm,D:\ProgramFiles\WINYES\TC20H);Begincleardevice();Over图形驱动函数江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页YesNoYesi=450i+=10+++=10rectangle(i,40,i+10,49);rectangle(i,451,i+10,460);画上边围墙画下边围墙i=50i=600121Noi=50江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页4)具体游戏功能模块:画左边围墙i+=10rectangle(50,i,59,i+10);rectangle(601,i,610,i+10);Over画右边围墙21Gamebeginrandomize();food.yes=1;snake.life=0;snake.direction=1;snake.node=2;snake.x[0]=100;snake.y[0]=100;snake.x[1]=110;snake.y[1]=100;初始数据1图4.开始画面流程图江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页YesYesNo输出分数1PrScore()(!kbhit())if(food.yes==1)food.x=rand()%400+60;food.y=rand()%350+60;setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);食物坐标显示食物1Yes是否按键21江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页Yes判断蛇头的移动方向Noswitch(snake.direction)snake.x[0]+=10;break;snake.x[0]-=10;break;snake.y[0]-=10;break;snake.y[0]+=10;break;122i--i0i=snake.node-11江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页NoYesNoYesYesNo1i=3If(isnake.node;)i++if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])Gameoverif(snake.x[0]55||snake.x[0]595||snake.y[0]55||1223江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页NoYes吃掉食物,重新定义食物坐标1if(snake.x[0]==food.x&&snake.y[0]==food.y)setcolor(0);rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;snake.node++;food.yes=1;score+=10;PrScore();setcolor(4);for(i=0;isnake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);1蛇的节数加1,分数加10,节数加1,并都输出画蛇223江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页图5.具体游戏流程图YesNo接收按键用黑色去掉最后以及诶,并画出新的一节key=bioskey(0)setcolor(0)rectangle(snake.x[snake.node1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10)key==ESC2key==UP&&snake.direction!=4snake.direction=3;key==RIGHT&&snake.direction!=2key==LEFT&&snake.direction!=1key==DOWN&&snake.direction!=3snake.direction=1;snake.direction=2;snake.direction=4;1江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页5)游戏结束功能模块:6)输出成绩功能模块:设置填充风格,背景底纹,前景颜色Beginsetfillstyle(SOLID_FILL,RED)bar(475,150,625,170)setcolor(8)settextstyle(0,0,2)Over输出成绩图6.游戏结束流程图图7.输出成绩流程图sprintf(str,score:%d,score);清屏并输出分数设置相应参数,显示gameoverBegincleardevice()PrScore()setcolor(RED)settextstyle(0,0,4)outtextxy(200,200,GAMEOVER)Over江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页7)图形结束功能模块:(2)数据结构设计1.食物的结构体:structFood{intx;inty;intyes;}food;食物的横坐标—x;食物的纵坐标—y;判断是否要出现食物的变量—yes,0代表要出现食物,1代表已有食物;2.蛇的结构体:structSnake{intx[N];inty[N];intnode;intdirection;intlife;Begingetch()closegraph()Over图8.图形结束流程图江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页}snake;各节蛇的横坐标--x[N];各节蛇的竖坐标--yN];蛇的节数--node;蛇移动方向—direction;蛇的生命—life;0活着,1死亡(3)函数功能描述voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDrawK(void);/*开始画面*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏具体过程*/voidPrScore(void);/*输出成绩*/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;}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);*/initgraph(&gd,&gm,D:\ProgramFiles\WINYES\TC20H);cleardevice();}voidDrawK(void){/*setbkcolor(LIGHTGREEN);*/江西科技师范学院实验报告年级班号姓名同组姓名实验日期年月日成绩指导老师:第页setcolor(1
本文标题:09级高级语言程序设计实训报告 2
链接地址:https://www.777doc.com/doc-4305139 .html