找一个300行左右的C语言贪吃蛇代码
时间: 2024-03-27 18:36:02 浏览: 55
用c语言编写的贪吃蛇的c代码
以下是一个使用C语言实现的简单贪吃蛇游戏代码,共计约300行左右:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define ROW 20 // 行数
#define COL 30 // 列数
// 贪吃蛇结构体
typedef struct
{
int x; // 横坐标
int y; // 纵坐标
} Snake;
// 食物结构体
typedef struct
{
int x; // 横坐标
int y; // 纵坐标
} Food;
// 全局变量
int score = 0; // 分数
Snake snake[ROW * COL]; // 贪吃蛇
int snake_len = 3; // 贪吃蛇长度
char direction = 'r'; // 贪吃蛇移动方向
Food food; // 食物
// 初始化函数
void init()
{
// 随机生成食物位置
srand((unsigned int)time(NULL));
food.x = rand() % COL;
food.y = rand() % ROW;
// 初始化贪吃蛇位置
snake[0].x = 5;
snake[0].y = 5;
snake[1].x = 4;
snake[1].y = 5;
snake[2].x = 3;
snake[2].y = 5;
}
// 绘制函数
void draw()
{
system("cls"); // 清屏
// 绘制游戏界面
for (int i = 0; i <= ROW + 1; i++)
{
for (int j = 0; j <= COL + 1; j++)
{
if (i == 0 || i == ROW + 1 || j == 0 || j == COL + 1)
{
printf("#");
}
else if (i == food.y && j == food.x)
{
printf("F");
}
else
{
int flag = 0;
for (int k = 0; k < snake_len; k++)
{
if (snake[k].x == j && snake[k].y == i)
{
printf("S");
flag = 1;
break;
}
}
if (flag == 0)
{
printf(" ");
}
}
}
printf("\n");
}
// 绘制分数
printf("Score: %d\n", score);
}
// 移动函数
void move()
{
// 记录贪吃蛇尾部位置
int tail_x = snake[snake_len - 1].x;
int tail_y = snake[snake_len - 1].y;
// 移动贪吃蛇
for (int i = snake_len - 1; i > 0; i--)
{
snake[i].x = snake[i - 1].x;
snake[i].y = snake[i - 1].y;
}
switch (direction)
{
case 'u':
snake[0].y--;
break;
case 'd':
snake[0].y++;
break;
case 'l':
snake[0].x--;
break;
case 'r':
snake[0].x++;
break;
}
// 判断是否碰到边界
if (snake[0].x < 1 || snake[0].x > COL || snake[0].y < 1 || snake[0].y > ROW)
{
printf("Game Over!\n");
exit(0);
}
// 判断是否碰到自身
for (int i = 1; i < snake_len; i++)
{
if (snake[0].x == snake[i].x && snake[0].y == snake[i].y)
{
printf("Game Over!\n");
exit(0);
}
}
// 判断是否吃到食物
if (snake[0].x == food.x && snake[0].y == food.y)
{
// 分数增加
score++;
// 随机生成新的食物位置
food.x = rand() % COL;
food.y = rand() % ROW;
// 贪吃蛇长度增加
snake_len++;
// 将尾部添加到贪吃蛇末尾
snake[snake_len - 1].x = tail_x;
snake[snake_len - 1].y = tail_y;
}
}
// 获取键盘输入方向
void get_input()
{
if (_kbhit())
{
char ch = _getch();
switch (ch)
{
case 'w':
if (direction != 'd')
{
direction = 'u';
}
break;
case 's':
if (direction != 'u')
{
direction = 'd';
}
break;
case 'a':
if (direction != 'r')
{
direction = 'l';
}
break;
case 'd':
if (direction != 'l')
{
direction = 'r';
}
break;
}
}
}
int main()
{
init(); // 初始化
while (1)
{
draw(); // 绘制
move(); // 移动
get_input(); // 获取键盘输入
Sleep(100); // 休眠
}
return 0;
}
```
这个代码实现了一个简单的贪吃蛇游戏,包括贪吃蛇的移动、食物的生成、碰撞检测、分数统计和界面显示等功能。你可以根据这个代码进行学习和修改,来实现自己的贪吃蛇游戏。
阅读全文