帮我写一个c语言的贪吃蛇
时间: 2023-03-21 16:03:45 浏览: 67
好的,我会为您提供一个简单的C语言贪吃蛇的代码,如下所示:
```
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define WIDTH 50 // 宽度
#define HEIGHT 20 // 高度
#define FOOD_SYMBOL '$' // 食物标记
#define SNAKE_SYMBOL '#' // 蛇标记
#define WALL_SYMBOL '=' // 墙标记
int snake_x[100], snake_y[100]; // 蛇的位置数组
int food_x, food_y; // 食物的位置
int score = 0; // 得分
int speed = 200; // 移动速度
int length = 3; // 蛇的初始长度
int direction = 0; // 蛇的初始方向
int is_gameover = 0; // 游戏是否结束的标记
void init(); // 初始化
void draw(); // 绘制
void update(); // 更新
void move(); // 移动
void generate_food(); // 生成食物
void check_collision(); // 检查碰撞
int main() {
init();
while(!is_gameover) {
draw();
update();
move();
check_collision();
Sleep(speed);
}
printf("游戏结束,得分:%d\n", score);
return 0;
}
void init() {
srand(time(NULL));
// 初始化蛇的位置
for(int i = 0; i < length; i++) {
snake_x[i] = WIDTH / 2 + i;
snake_y[i] = HEIGHT / 2;
}
// 生成食物
generate_food();
}
void draw() {
system("cls"); // 清屏
// 绘制墙
for(int i = 0; i < WIDTH; i++) {
printf("%c", WALL_SYMBOL);
}
printf("\n");
// 绘制蛇和食物
for(int y = 0; y < HEIGHT; y++) {
for(int x = 0; x < WIDTH; x++) {
if(x == 0 || x == WIDTH - 1) {
printf("%c", WALL_SYMBOL);
} else if(x == snake_x[0] && y == snake_y[0]) {
printf("%c", SNAKE_SYMBOL);
} else if(x == food_x && y == food_y) {
printf("%c", FOOD_SYMBOL);
} else {
int is_body = 0;
for(int i = 1; i < length; i++) {
if(x == snake_x[i] && y == snake_y[i]) {
printf("%c", SNAKE_SYMBOL);
is_body = 1;
break;
}
}
if(!is_body) {
printf(" ");
}
}
}
printf("\n");
}
// 绘制墙
for(int i = 0; i < WIDTH; i++) {
printf("%c", WALL_SYMBOL);
}
printf("\n");
// 显示得分
printf("得分:%d\n", score);
}
void update() {
if(kbhit()) {
switch(getch()) {
case 'w':
direction = 1;
break;
case 's':
direction = 2;
break
阅读全文