1、 三、设计概要: 1.初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”; 2.游戏界面模块:设计绿色的边框,边框用黑色无框格子填充作为游戏活动区域; 3.游戏运行模块:运用函数控制蛇长及食物的关系,并使用键盘控制方向; 4.判断模块:头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。四、详细设计及实现:1.流程图(函数调用关系图)2.预处理#includestdlib.hgraphics.hdos.hconio.htime.h3.数据结构IMAGE wal;MOUSEMSG m;typedef struct 作为蛇身体和头部格子的坐标 int x40; int y40; in
2、t derection; int food; int foodx; int foody;蛇身体格子的个数,即蛇长 int size; snake;snake s;4.全局变量为分数赋初值0,为速度赋初值300int score=0,speed=300;5.函数声明void init(void);void wall(void);void food(void);void gameover(void);int food1(void);void snakes(void);void draw(void);6.算法设计main函数:具体实现程序功能。调用的函数函数功能init初始化绘图环境food随机产生
3、食物位置,判断是否进食,增加蛇长draw画出蛇体状态及食物位置snakes蛇体及速度变化,运动方向的选择gameover判断游戏是否终止,显示分数init函数:给结构体snake 赋初值:s.x0=25; 蛇体第一格初始位置的横坐标s.y0=20; 蛇体第一格初始位置的纵坐标s.x1=24; 蛇体第二格初始位置的横坐标s.y1=20; 蛇体第二格初始位置的纵坐标s.x2=23; 蛇体第三格初始位置的横坐标s.y2=20; 蛇体第三格初始位置的纵坐标s.derection=1; 蛇运动的初始方向定义为1s.food=0; 未吃食前食物的数量为0s.size=3; 蛇的初始长度为3个格子初始化绘图
4、环境为600*600像素的区域;在(250.250)处显示游戏标题“贪吃蛇”;等待操作者提供鼠标信息以开始游戏;开始游戏后,用绿色边框显示活动区域。initgraphouttextxy在当前位置输出字符串“贪吃蛇”GetMouseMsg获取一个鼠标信息;若无,则一直等待cleardevice清屏wall画出活动区域及边框food函数、food1函数:调用函数rand使计算机产生随机数,以获得食物的随机位置。rand获得一个随机数food1判断蛇是否吃到食物,若吃到则return 1,回到food函数中的do-while循环,再次随机生成食物位置;否则return 0,food调用结束。draw
5、函数:绘出蛇体及食物,蛇体边框绘制为亮蓝色,食物边框为红色;并在(0.0)处显示“score:_”(当前得分)。setcolor设置蛇体为蓝色&设置食物为红色rectangle根据数组s.x40、s.y40及s.size画出蛇体;根据s.foodx、s.foody及s.size画出食物位置在当前位置输出字符串“score:”显示得分snakes函数:用s.food(进食判断标志)判断蛇是否吃到食物,吃到则蛇长(限制蛇长40格)加一个格子,分数累加10,速度加快,并将s.food重置为0;s,direction判断蛇头格子移动的方向。使用的结构体Typedef struct()snake;sna
6、ke s。snakes函数的功能If语句:判断蛇是否吃到食物(蛇长40格),吃到则蛇长加一格,分数累加10,速度加快,并将s.food(进食判断标志)重置为0Switch语句:根据case1、case 2、case3、case4判断s.direction(WSAD=上下左右)gameover函数 显示gameover提示信息,并输出玩家所得分数,结束游戏进程。设置字符串“score:_”为白色_”“gameover”显示得分获取一个鼠标信息:若无,则一直等待;若有,则exit,退出游戏。五、测试及运行结果六、成员分组:程序构思及模块化、Main函数:宋佳文图形函数、Init函数、wall函数、gameover函数、:马一菲 宏旭需求分析、Draw函数、Food函数、food1函数、snakes函数:阮梦宇、莉
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1