用c语言写一个贪吃蛇代码
时间: 2023-11-17 10:05:30 浏览: 88
以下是一个简单的贪吃蛇代码示例,使用 C 语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 60
#define HEIGHT 30
int score = 0;
int snake_len = 3;
int snake_pos[100][2];
int food_pos[2];
char direction = 'd';
void init()
{
// 初始化贪吃蛇和食物
snake_pos[0][0] = 10;
snake_pos[0][1] = 5;
snake_pos[1][0] = 9;
snake_pos[1][1] = 5;
snake_pos[2][0] = 8;
snake_pos[2][1] = 5;
srand(time(NULL));
food_pos[0] = rand() % (WIDTH - 2) + 1;
food_pos[1] = rand() % (HEIGHT - 2) + 1;
}
void draw()
{
// 绘制游戏界面
system("cls");
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
printf("#");
} else if (i == food_pos[1] && j == food_pos[0]) {
printf("@");
} else {
int flag = 0;
for (int k = 0; k < snake_len; k++) {
if (i == snake_pos[k][1] && j == snake_pos[k][0]) {
printf("*");
flag = 1;
break;
}
}
if (!flag) {
printf(" ");
}
}
}
printf("\n");
}
printf("Score: %d\n", score);
}
void update()
{
// 移动贪吃蛇
int x = snake_pos[0][0];
int y = snake_pos[0][1];
switch (direction) {
case 'w':
y--;
break;
case 's':
y++;
break;
case 'a':
x--;
break;
case 'd':
x++;
break;
}
if (x == food_pos[0] && y == food_pos[1]) {
// 吃到食物
score++;
snake_len++;
snake_pos[snake_len - 1][0] = snake_pos[snake_len - 2][0];
snake_pos[snake_len - 1][1] = snake_pos[snake_len - 2][1];
food_pos[0] = rand() % (WIDTH - 2) + 1;
food_pos[1] = rand() % (HEIGHT - 2) + 1;
} else {
// 没有吃到食物
for (int i = snake_len - 1; i > 0; i--) {
snake_pos[i][0] = snake_pos[i - 1][0];
snake_pos[i][1] = snake_pos[i - 1][1];
}
}
snake_pos[0][0] = x;
snake_pos[0][1] = y;
// 判断贪吃蛇是否死亡
if (snake_pos[0][0] <= 0 || snake_pos[0][0] >= WIDTH - 1 || snake_pos[0][1] <= 0 || snake_pos[0][1] >= HEIGHT - 1) {
exit(0);
}
for (int i = 1; i < snake_len; i++) {
if (snake_pos[0][0] == snake_pos[i][0] && snake_pos[0][1] == snake_pos[i][1]) {
exit(0);
}
}
}
void input()
{
// 处理游戏输入
if (kbhit()) {
char ch = getch();
switch (ch) {
case 'w':
case 's':
case 'a':
case 'd':
if ((ch == 'w' && direction != 's') || (ch == 's' && direction != 'w') || (ch == 'a' && direction != 'd') || (ch == 'd' && direction != 'a')) {
direction = ch;
}
break;
case 'q':
exit(0);
break;
}
}
}
int main()
{
// 初始化游戏
init();
// 开始游戏循环
while (1) {
// 绘制游戏界面
draw();
// 处理游戏输入
input();
// 更新游戏状态
update();
// 控制游戏帧率
Sleep(100);
}
return 0;
}
```
这是一个基本的贪吃蛇代码示例,可以实现贪吃蛇的基本功能。当然,你可以根据自己的需要进行修改和扩展。
阅读全文