C语言贪吃蛇游戏代码示例

以下是使用C语言编写的贪吃蛇游戏的代码示例:

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

#define WIDTH 40
#define HEIGHT 20

int length;
int head_x, head_y;
int food_x, food_y;
int gameover;
int score;
int tail_x[100], tail_y[100];
int nTail;
enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
enum eDirection dir;

// 初始化游戏
void Setup()
{
    gameover = 0;
    dir = STOP;
    head_x = WIDTH / 2;
    head_y = HEIGHT / 2;
    food_x = rand() % WIDTH;
    food_y = rand() % HEIGHT;
    score = 0;
    nTail = 0;
}

// 绘制游戏画面
void Draw()
{
    system('cls');
    for (int i = 0; i < WIDTH + 2; i++)
        printf('#');
    printf('
');

    for (int i = 0; i < HEIGHT; i++)
    {
        for (int j = 0; j < WIDTH; j++)
        {
            if (j == 0)
                printf('#');
            if (i == head_y && j == head_x)
                printf('O'); // 蛇头
            else if (i == food_y && j == food_x)
                printf('F'); // 食物
            else
            {
                int printTail = 0;
                for (int k = 0; k < nTail; k++)
                {
                    if (i == tail_y[k] && j == tail_x[k])
                    {
                        printf('o'); // 蛇身
                        printTail = 1;
                    }
                }
                if (!printTail)
                    printf(' ');
            }
            if (j == WIDTH - 1)
                printf('#');
        }
        printf('
');
    }

    for (int i = 0; i < WIDTH + 2; i++)
        printf('#');
    printf('
');
}

// 处理用户输入
void Input()
{
    if (_kbhit())
    {
        switch (_getch())
        {
        case 'a':
            dir = LEFT;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 'w':
            dir = UP;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x':
            gameover = 1;
            break;
        }
    }
}

// 处理游戏逻辑
void Logic()
{
    int prev_x = tail_x[0];
    int prev_y = tail_y[0];
    int prev2_x, prev2_y;
    tail_x[0] = head_x;
    tail_y[0] = head_y;
    for (int i = 1; i < nTail; i++)
    {
        prev2_x = tail_x[i];
        prev2_y = tail_y[i];
        tail_x[i] = prev_x;
        tail_y[i] = prev_y;
        prev_x = prev2_x;
        prev_y = prev2_y;
    }

    switch (dir)
    {
    case LEFT:
        head_x--;
        break;
    case RIGHT:
        head_x++;
        break;
    case UP:
        head_y--;
        break;
    case DOWN:
        head_y++;
        break;
    }

    // 处理边界碰撞
    if (head_x >= WIDTH)
        head_x = 0;
    else if (head_x < 0)
        head_x = WIDTH - 1;
    if (head_y >= HEIGHT)
        head_y = 0;
    else if (head_y < 0)
        head_y = HEIGHT - 1;

    // 处理自身碰撞
    for (int i = 0; i < nTail; i++)
    {
        if (tail_x[i] == head_x && tail_y[i] == head_y)
            gameover = 1;
    }

    // 处理吃到食物
    if (head_x == food_x && head_y == food_y)
    {
        score += 10;
        food_x = rand() % WIDTH;
        food_y = rand() % HEIGHT;
        nTail++;
    }
}

int main()
{
    Setup();
    while (!gameover)
    {
        Draw();
        Input();
        Logic();
        Sleep(10);
    }
    printf('Game Over!\n');
    printf('Score: %d\n', score);
    return 0;
}

这段C语言代码实现了一个简单的贪吃蛇游戏,包括游戏逻辑、控制、得分等功能。代码中使用了Windows.h头文件中的一些函数来实现控制台窗口的清屏和延迟等操作。你可以在Windows环境下编译和运行这段代码,体验贪吃蛇游戏的乐趣。

C语言贪吃蛇游戏代码示例

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

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