项目概述:
1)实现贪吃蛇游戏基本功能,屏幕上随机出现一个“食物”,称为豆子。玩家能利用上下左右键控制“蛇”的移动,“蛇”吃到“豆子”后“蛇”身体加长一节,得分增加,“蛇”碰到边界或蛇头与蛇身相撞,“蛇”死亡,游戏结束。
2)进行交互界面的设计,要有开始键、暂停键和停止退出的选项,能够控制游戏进程。对蛇吃到豆子进行分值计算,可以设置游戏速度,游戏音乐等拓展元素。
3)AI贪吃蛇,结合A*算法和适当的策略,设计能吃满屏的贪吃蛇。
关键算法:
![](https://i-blog.csdnimg.cn/blog_migrate/4589c6a61350586ee4d007deded0a14a.png)
class CSnake
{
int len; // 蛇的长度
Point body[MAX]; // 蛇的身体
int direc; // 运动方向
void UpMove(); // 向上运动
void DownMove(); // 向下运动
void LeftMove(); // 向左运动
void RightMove(); // 向右运动
void init();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6e5a9e1f41fca32dff73a2c07bb5cf34.png)
void CSnake::LeftMove()
{
for (int i = len - 1; i > 0; --i) {
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
body[0].x--;
direc = 3;
}
void CSnake::RightMove()
{
for (int i = len - 1; i > 0; --i) {
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
body[0].x++;
direc = 4;
}