" 以下是一个简单的C语言贪吃蛇游戏代码。请注意,这个代码可能不是最优化和最完善的,但它可以作为一个起点,让你了解如何编写一个基本的贪吃蛇游戏。
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define ROW 20
#define COL 20
int snake[100][2];
int food[2];
int len = 3;
int score = 0;
int speed = 100;
void gotoxy(int x, int y)
{
COORD pos = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void init()
{
// 初始化蛇的位置和方向
snake[0][0] = 5;
snake[0][1] = 5;
snake[1][0] = 5;
snake[1][1] = 6;
snake[2][0] = 5;
snake[2][1] = 7;
// 初始化食物的位置
food[0] = rand() % ROW;
food[1] = rand() % COL;
}
void draw()
{
system("cls");
for (int i = 0; i < ROW + 2; i++)
{
for (int j = 0; j < COL + 2; j++)
{
if (i == 0 || i == ROW + 1 || j == 0 || j == COL + 1)
{
printf("#");
}
else if (i == food[0] + 1 && j == food[1] + 1)
{
printf("$");
}
else
{
int flag = 0;
for (int k = 0; k < len; k++)
{
if (i == snake[k][0] && j == snake[k][1])
{
printf("*");
flag = 1;
break;
}
}
if (!flag)
{
printf(" ");
}
}
}
printf("\n");
}
printf("Score: %d\n", score);
printf("Speed: %d\n", speed);
}
void update()
{
// 记录蛇尾的位置
int tail[2];
tail[0] = snake[len - 1][0];
tail[1] = snake[len - 1][1];
// 移动蛇身
for (int i = len - 1; i > 0; i--)
{
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
// 移动蛇头
if (_kbhit())
{
switch (_getch())
{
case 'w':
snake[0][0]--;
break;
case 'a':
snake[0][1]--;
break;
case 's':
snake[0][0]++;
break;
case 'd':
snake[0][1]++;
break;
}
}
// 判断是否吃到食物
if (snake[0][0] == food[0] && snake[0][1] == food[1])
{
// 重新生成食物
food[0] = rand() % ROW;
food[1] = rand() % COL;
// 添加新的蛇身
snake[len][0] = tail[0];
snake[len][1] = tail[1];
len++;
// 更新分数
score += 100;
// 控制速度
speed -= 5;
}
}
void run()
{
while (1)
{
// 画界面
"