以下是一个简单的贪吃蛇C语言代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>

#define WIDTH 20  // 地图宽度
#define HEIGHT 20 // 地图高度

int map[WIDTH][HEIGHT]; // 地图
int snake[WIDTH * HEIGHT][2]; // 蛇的位置
int snake_length; // 蛇的长度
int score; // 得分

// 初始化地图
void init_map() {
    for (int i = 0; i < WIDTH; i++) {
        for (int j = 0; j < HEIGHT; j++) {
            map[i][j] = 0;
        }
    }
}

// 随机生成一个食物
void generate_food() {
    int x, y;
    do {
        x = rand() % WIDTH;
        y = rand() % HEIGHT;
    } while (map[x][y] != 0);
    map[x][y] = -1;
}

// 初始化蛇
void init_snake() {
    snake_length = 1;
    snake[0][0] = WIDTH / 2;
    snake[0][1] = HEIGHT / 2;
    map[snake[0][0]][snake[0][1]] = 1;
}

// 判断蛇是否撞墙或撞自己
int is_collision() {
    int x = snake[0][0];
    int y = snake[0][1];
    // 是否撞墙
    if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT) {
        return 1;
    }
    // 是否撞自己
    for (int i = 1; i < snake_length; i++) {
        if (snake[i][0] == x && snake[i][1] == y) {
            return 1;
        }
    }
    return 0;
}

// 移动蛇
void move_snake(int direction) {
    int x = snake[0][0];
    int y = snake[0][1];
    switch (direction) {
        case 1: // 上
            y--;
            break;
        case 2: // 下
            y++;
            break;
        case 3: // 左
            x--;
            break;
        case 4: // 右
            x++;
            break;
    }
    // 判断是否撞墙或撞自己
    if (is_collision()) {
        printf("Game Over!\n");
        exit(0);
    }
    // 判断是否吃到食物
    if (map[x][y] == -1) {
        snake_length++;
        score++;
        generate_food();
    }
    // 移动蛇的身体
    for (int i = snake_length - 1; i > 0; i--) {
        snake[i][0] = snake[i - 1][0];
        snake[i][1] = snake[i - 1][1];
        map[snake[i][0]][snake[i][1]] = 1;
    }
    // 移动蛇的头部
    snake[0][0] = x;
    snake[0][1] = y;
    map[x][y] = 1;
}

// 显示游戏界面
void display() {
    system("cls"); // 清屏
    for (int i = 0; i < WIDTH; i++) {
        for (int j = 0; j < HEIGHT; j++) {
            if (map[i][j] == 0) { // 空地
                printf(".");
            } else if (map[i][j] == 1) { // 蛇的身体
                printf("*");
            } else if (map[i][j] == -1) { // 食物
                printf("o");
            }
        }
        printf("\n");
    }
    printf("Score: %d\n", score);
}

int main() {
    srand(time(NULL)); // 初始化随机数生成器
    init_map(); // 初始化地图
    init_snake(); // 初始化蛇
    generate_food(); // 随机生成食物
    while (1) {
        display(); // 显示游戏界面
        if (_kbhit()) { // 检测键盘输入
            int c = _getch();
            if (c == 72) { // 上
                move_snake(1);
            } else if (c == 80) { // 下
                move_snake(2);
            } else if (c == 75) { // 左
                move_snake(3);
            } else if (c == 77) { // 右
                move_snake(4);
            }
        }
        move_snake(4); // 默认向右移动
        Sleep(200); // 等待200毫秒
    }
    return 0;
}
给我一个贪吃蛇c语言代码

原文地址: https://www.cveoy.top/t/topic/E4K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录