1 内容提要
项目题目是贪吃蛇(Greedy Snake),实现了Windows控制台下的一个小游戏,这是一个广为人知的非常经典的休闲类小游戏。该游戏功能玩法简单,玩家通过键盘方向键控制蛇上下左右移动,蛇吃到食物得分并增长,直到撞墙等造成死亡游戏才会结束。整个游戏其实就是一个无穷的循环,直到退出游戏时退出循环。这个项目目前仅可进行最基本的贪吃蛇游戏,即开始游戏、选择游戏模式、退出游戏。该项目使用的编程语言为C++语言;所采用的开发环境为code blocks。
2 类设计
该项目中仅直接定义了一个类,就是Snake(蛇)类。该类的作用,即定义了一个Snake类封装贪吃蛇游戏,并声明了一些基本的变量和成员函数:游戏地图、蛇的长度、蛇头坐标、蛇尾坐标、描述蛇的移动方向、蛇的速度、显示游戏地图的函数、移动函数、生成食物的函数。通过Snake类,可以控制蛇的移动和吃到食物;除此之外,还有蛇的速度游戏地图的展开。该类中的这些设计,在整个项目中发挥着重要作用,是项目正常运行的一大核心。
3 总体设计流程
输入代码并开始运行程序,首先出现的是游戏开始界面,可选择开始游戏或者退出游戏。若选择退出游戏,则退出程序,程序关闭;若选择开始游戏,则进入游戏模式选择界面,若选择正常模式,直接开始游戏,玩家操作小蛇吃到食物得分并长大,直到小蛇撞墙等造成死亡游戏才结束并显示最终得分,最后可按enter键回到游戏开始界面;若选择无障碍模式,同样直接进入游戏,开始操作小蛇吃到食物。但小蛇撞到墙并不会死亡,如果想结束游戏。可按Esc键退出回到游戏开始界面。
模块划分:
Snake类:声明一些基本的变量和成员函数,基本的变量包括游戏地图、蛇的长度、蛇头坐标、蛇尾坐标、描述蛇的移动方向、蛇的速度等。
移动函数move():控制蛇的移动以及蛇头、蛇尾的操作。
转弯函数turn():蛇的转弯,向左、向右、向上、向下。
生产食物的函数create():食物是随机生成的,小蛇每吃掉一个食物就得出现新的食物。
游戏开始函数GameStart函数():用来集成函数,实现函数的基本功能。
4 详细设计
4.1 游戏地图
显示游戏地图采用函数print(),游戏地图map为二维数组,如果数组元素map[i][j]的值为0,代表该位置什么也没有;如果map[i][j]的值大于0,代表该位置是蛇的身体;如果-1==map[i][j],代表该位置是食物;如果map[i][j]>0,代表该位置是蛇的头部,如表4.1所示。用8,2,4,6作为方向指针来描述蛇的身体,用-8,-2,-4,-6作为方向指针来描述蛇的头部。蛇的身体任何位置沿蛇的身体指向头部,蛇的头部指向蛇的身体。