欢迎来到天天文库
浏览记录
ID:50132542
大小:47.52 KB
页数:8页
时间:2020-03-05
《贪吃蛇C语言课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、贪吃蛇游戏设计姓名:张力学号:10020323完成日期:月日一、设计目的贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣二、总体设计主函数↓图形驱动Init画界面DrawK游戏具体过程GamePlay图形结束Close↓游戏结束GameOver输出成绩PrScore三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)①主函数main():定义使用的常数,全
2、局变量及函数原型说明,并调用Init()函数初始化图形系统;然后调用DrawK()函数画界面,调用GamePlay()函数实现游戏的具体过程,游戏结束后调用Close()函数关闭图形系统结束程序。②画界面函数DrawK():主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。③游戏具体过程函数GamePlay():算法过程:a.设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时
3、,蛇只有蛇头,设定一个开始方向;b.循环执行,直到按Esc键退出;c.没有按键的情况下,循环执行。如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如果出现这两种情况之一,则蛇死;调用游戏结束函数GamePlay(),结束本次游戏;判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等;如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分
4、数都进行相应的改变。在新位置画出蛇。采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。D.如果有按键,则识别按键值。如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变蛇方向的变量direction的值,相反方向键无效。④游戏结束函数GameOver():游戏结束,清除屏幕,调用输出分数函数PrScore(),并显示游戏结束。⑤输出分数函数PrScore():在指定位置利用sprintf()将整
5、数转换为字符串,用outtextxy()输出,、bar()函数的应用是为了覆盖原来的值。⑥图形结束函数Close():在显示游戏结束信息的画面时,按任意键关闭图形系统,程序结束。四、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题和采取的解决措施等;将源文件在TC3.0环境下调试运行,前期发现错误为游戏界面静止。五、源程序清单及执行结果:#include#include#include#include
6、#include#include#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineEsc0x011b#defineN200/*定义全局变量*/inti,key;intscore=0;/*得分*/intgamespeed=50000;/*游戏速度可以自己调整*/structFood{intx;/*定义食物的横坐标*/inty;/*定义食物的纵坐标*/intyes;/*
7、判断是否要出现食物的变量*/}food;/*食物的结构体*/structsnake{intx[N];inty[N];intnode;/*蛇的节数*/intdirection;/*蛇的移动方向*/intlife;/*蛇的生命,0活着,1死亡*/}snake;voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDrawK(void);/*开始画面*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏
8、的具体过程*/voidPrScore(void);/*输出成绩*//*图形驱动*/voidInit(void){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"D:TC30LIB");}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/voidDrawK(void){setbkcolor(LIGHTGREEN);setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WID
此文档下载收益归作者所有