由于贪吃蛇是一种经典的游戏,并且非常适合用于学习编程,因此有许多人选择用C语言来编写贪吃蛇游戏。下面是一个简单的贪吃蛇游戏的C语言代码示例:

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

#define WIDTH 20
#define HEIGHT 20

int snake[100][2];
int direction;
int length;
int food[2];

void init_game() {
    int i;
    length = 3;
    direction = 3;
    snake[0][0] = WIDTH / 2;
    snake[0][1] = HEIGHT / 2;
    snake[1][0] = snake[0][0] - 1;
    snake[1][1] = snake[0][1];
    snake[2][0] = snake[0][0] - 2;
    snake[2][1] = snake[0][1];
    srand(time(NULL));
    food[0] = rand() % WIDTH;
    food[1] = rand() % HEIGHT;
}

void print_board() {
    int i, j, k;
    system("cls");
    for (i = 0; i < HEIGHT; i++) {
        for (j = 0; j < WIDTH; j++) {
            if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
                printf("#");
            } else if (i == food[1] && j == food[0]) {
                printf("F");
            } else {
                for (k = 0; k < length; k++) {
                    if (snake[k][0] == j && snake[k][1] == i) {
                        printf("O");
                        break;
                    }
                }
                if (k == length) {
                    printf(" ");
                }
            }
        }
        printf("\n");
    }
}

void move_snake() {
    int i;
    for (i = length - 1; i > 0; i--) {
        snake[i][0] = snake[i - 1][0];
        snake[i][1] = snake[i - 1][1];
    }
    switch (direction) {
        case 0:
            snake[0][1]--;
            break;
        case 1:
            snake[0][0]++;
            break;
        case 2:
            snake[0][1]++;
            break;
        case 3:
            snake[0][0]--;
            break;
    }
}

int check_collision() {
    int i;
    if (snake[0][0] == 0 || snake[0][0] == WIDTH - 1 || snake[0][1] == 0 || snake[0][1] == HEIGHT - 1) {
        return 1;
    }
    for (i = 1; i < length; i++) {
        if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1]) {
            return 1;
        }
    }
    if (snake[0][0] == food[0] && snake[0][1] == food[1]) {
        length++;
        food[0] = rand() % WIDTH;
        food[1] = rand() % HEIGHT;
    }
    return 0;
}

int main() {
    init_game();
    while (1) {
        print_board();
        if (kbhit()) {
            switch (getch()) {
                case 'w':
                    if (direction != 2) {
                        direction = 0;
                    }
                    break;
                case 'd':
                    if (direction != 3) {
                        direction = 1;
                    }
                    break;
                case 's':
                    if (direction != 0) {
                        direction = 2;
                    }
                    break;
                case 'a':
                    if (direction != 1) {
                        direction = 3;
                    }
                    break;
            }
        }
        move_snake();
        if (check_collision()) {
            printf("Game Over!\n");
            break;
        }
        Sleep(100);
    }
    return 0;
}

该代码使用了Windows系统的特定函数,因此只能在Windows平台上运行。您可以根据需要进行修改以适应其他操作系统。

该程序使用了一个二维数组来存储蛇的位置和长度,并使用一个整数变量来存储蛇的方向。它还使用了一个二维数组来存储食物的位置。游戏的逻辑由三个函数实现:init_game()初始化游戏,print_board()打印游戏画面以及move_snake()移动蛇。游戏循环,直到蛇撞到边界或自己时结束。

该程序使用了一些基本的C语言语法,例如数组、条件语句、循环语句和函数等。学习者可以根据需要进行修改和扩展,以改进游戏的功能和表现。

贪吃蛇c语言编程

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

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