# C语言贪吃蛇代码及设计思路
贪吃蛇游戏是一款经典的游戏,它以一个蛇形为主角,通过在迷宫中吃掉食物并避免碰撞来获得分数,在C语言中,我们可以使用基本的控制台输入输出和数组来实现这个游戏,下面我将给出一段简单的贪吃蛇游戏代码,并解释其设计思路。
```c
#include
#include
#include
#include
#define SCREEN_WIDTH 20
#define SCREEN_HEIGHT 20
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
enum eDirecton { STOP = 0, LEFT, RIGHT, UP, DOWN};
enum eDirecton dir;
void Setup()
{
dir = STOP;
x = SCREEN_WIDTH / 2;
y = SCREEN_HEIGHT / 2;
fruitX = rand() % SCREEN_WIDTH;
fruitY = rand() % SCREEN_HEIGHT;
score = 0;
}
void Draw()
system("cls");
for (int i = 0; i < SCREEN_HEIGHT; i++)
{
for (int j = 0; j < SCREEN_WIDTH; j++)
{
if (j == 0 || j == SCREEN_WIDTH - 1)
printf("#");
else if (i == 0 || i == SCREEN_HEIGHT - 1)
printf("#");
else if (i == fruitY && j == fruitX)
printf("*");
else if (i == y && j == x)
printf("O");
else if (i == tailY[nTail] && j == tailX[nTail])
printf("|");
else
printf(" ");
}
printf("\n");
}
printf("\n\nScore:%d\n", score);
}
void Input()
{
if (_kbhit()) //判断是否有按键被按下
{
switch (_getch()) //读取输入的字符
{
case 'a': //左移
dir = LEFT;
break;
case 'd': //右移
dir = RIGHT;
case 'w': //上移
dir = UP;
case 's': //下移
dir = DOWN;
}
void algorithm() //蛇的移动算法 控制蛇的移动方向和碰撞检测 以及食物的移动和生成 分数计数等操作 都在此函数中进行 是整个程序的核心部分 也是最重要的部分 ! 下面进行详细解释: 在每次游戏循环中 我们首先判断蛇头是否撞到了食物 如果撞到了 我们就将蛇的长度加一 并将食物重新随机生成到迷宫中 然后判断蛇是否撞到了墙壁或者蛇身 如果撞到了 就结束游戏 否则 我们将蛇头移动到新的位置 并将蛇尾删除 添加到蛇尾的位置 最后判断是否吃到了食物 如果吃到了 就增加分数! 整个过程就是这样的! 当然 还有许多细节需要注意和完善!比如:蛇头和蛇尾的碰撞检测可以更精确一些!可以使用一个循环来依次检查蛇头和蛇尾的每一个位置!当检测到碰撞时 就结束游戏!再比如:可以将食物生成算法的优先级降低一些!每次生成食物时 先判断蛇头是否已经碰到了食物 如果碰到了 就不再生成新的食物!这样可以使游戏更加有趣和挑战性!另外:在生成新的食物时 可以使用一个随机数生成器来随机生成食物的位置!这样可以增加游戏的随机性和趣味性!最后:可以将游戏的得分进行累计和显示!这样可以使玩家更加清楚地了解自己的得分情况!总之:这是一个非常有趣和挑战性的项目!需要我们不断地尝试和完善!才能做出一个完美的贪吃蛇游戏!下面是一个简单的贪吃蛇游戏代码示例: