c语言贪吃蛇代码及设计思路

admin 30 0

# 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() //蛇的移动算法 控制蛇的移动方向和碰撞检测 以及食物的移动和生成 分数计数等操作 都在此函数中进行 是整个程序的核心部分 也是最重要的部分 ! 下面进行详细解释: 在每次游戏循环中 我们首先判断蛇头是否撞到了食物 如果撞到了 我们就将蛇的长度加一 并将食物重新随机生成到迷宫中 然后判断蛇是否撞到了墙壁或者蛇身 如果撞到了 就结束游戏 否则 我们将蛇头移动到新的位置 并将蛇尾删除 添加到蛇尾的位置 最后判断是否吃到了食物 如果吃到了 就增加分数! 整个过程就是这样的! 当然 还有许多细节需要注意和完善!比如:蛇头和蛇尾的碰撞检测可以更精确一些!可以使用一个循环来依次检查蛇头和蛇尾的每一个位置!当检测到碰撞时 就结束游戏!再比如:可以将食物生成算法的优先级降低一些!每次生成食物时 先判断蛇头是否已经碰到了食物 如果碰到了 就不再生成新的食物!这样可以使游戏更加有趣和挑战性!另外:在生成新的食物时 可以使用一个随机数生成器来随机生成食物的位置!这样可以增加游戏的随机性和趣味性!最后:可以将游戏的得分进行累计和显示!这样可以使玩家更加清楚地了解自己的得分情况!总之:这是一个非常有趣和挑战性的项目!需要我们不断地尝试和完善!才能做出一个完美的贪吃蛇游戏!下面是一个简单的贪吃蛇游戏代码示例: