一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

c語言貪吃蛇游戲代碼QZ

 EYYLTV 2024-06-22 發(fā)布于廣東

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <windows.h>

// 游戲區(qū)域的大小

#define WIDTH 60

#define HEIGHT 20

// 蛇的移動方向

typedef enum {

    UP,

    DOWN,

    LEFT,

    RIGHT

} Direction;

// 食物的結(jié)構(gòu)體

typedef struct {

    int x;

    int y;

} Food;

// 蛇的結(jié)構(gòu)體

typedef struct {

    int x[WIDTH * HEIGHT];

    int y[WIDTH * HEIGHT];

    int length;

    Direction dir;

} Snake;

// 初始化蛇

void initSnake(Snake *snake) {

    snake->x[0] = WIDTH / 2;

    snake->y[0] = HEIGHT / 2;

    snake->length = 1;

    snake->dir = RIGHT;

}

// 初始化食物

void initFood(Food *food) {

    food->x = rand() % WIDTH;

    food->y = rand() % HEIGHT;

}

// 判斷蛇是否吃到食物

int isEatFood(Snake snake, Food food) {

    if (snake.x[0] == food.x && snake.y[0] == food.y) {

        return 1;

    }

    return 0;

}

// 判斷蛇是否撞到自己或邊界

int isGameOver(Snake snake) {

    // 撞到邊界

    if (snake.x[0] < 0 || snake.x[0] >= WIDTH || snake.y[0] < 0 || snake.y[0] >= HEIGHT) {

        return 1;

    }

    // 撞到自己

    for (int i = 1; i < snake.length; i++) {

        if (snake.x[0] == snake.x[i] && snake.y[0] == snake.y[i]) {

            return 1;

        }

    }

    return 0;

}

// 移動蛇

void moveSnake(Snake *snake) {

    int prevX = snake->x[0];

    int prevY = snake->y[0];

    switch (snake->dir) {

        case UP:

            snake->y[0]--;

            break;

        case DOWN:

            snake->y[0]++;

            break;

        case LEFT:

            snake->x[0]--;

            break;

        case RIGHT:

            snake->x[0]++;

            break;

    }

    for (int i = snake->length - 1; i > 0; i--) {

        snake->x[i] = snake->x[i - 1];

        snake->y[i] = snake->y[i - 1];

    }

    snake->x[1] = prevX;

    snake->y[1] = prevY;

}

// 繪制游戲界面

void draw(Snake snake, Food food) {

    system("cls");

    for (int i = 0; i < WIDTH + 2; i++) {

        printf("#");

    }

    printf("\n");

    for (int i = 0; i < HEIGHT; i++) {

        for (int j = 0; j < WIDTH; j++) {

            if (j == 0) {

                printf("#");

            }

            int isSnake = 0;

            for (int k = 0; k < snake.length; k++) {

                if (snake.x[k] == j && snake.y[k] == i) {

                    printf("*");

                    isSnake = 1;

                    break;

                }

            }

            if (!isSnake && food.x == j && food.y == i) {

                printf("@");

            } else if (!isSnake) {

                printf(" ");

            }

            if (j == WIDTH - 1) {

                printf("#");

            }

        }

        printf("\n");

    }

    for (int i = 0; i < WIDTH + 2; i++) {

        printf("#");

    }

    printf("\n");

}

int main() {

    Snake snake;

    Food food;

    initSnake(&snake);

    initFood(&food);

    while (1) {

        draw(snake, food);

        if (isEatFood(snake, food)) {

            snake.length++;

            initFood(&food);

        }

        if (isGameOver(snake)) {

            printf("Game Over!\n");

            break;

        }

        if (_kbhit()) {

            char key = _getch();

            switch (key) {

                case 'w':

                    if (snake.dir!= DOWN) {

                        snake.dir = UP;

                    }

                    break;

                case 's':

                    if (snake.dir!= UP) {

                        snake.dir = DOWN;

                    }

                    break;

                case 'a':

                    if (snake.dir!= RIGHT) {

                        snake.dir = LEFT;

                    }

                    break;

                case 'd':

                    if (snake.dir!= LEFT) {

                        snake.dir = RIGHT;

                    }

                    break;

            }

        }

        moveSnake(&snake);

        Sleep(100);

    }

    return 0;

}

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩一区二区三区四区乱码视频| 免费观看在线午夜视频| 欧美日韩国产精品第五页| 最新日韩精品一推荐日韩精品| 成人精品一区二区三区在线| 国内精品一区二区欧美| 亚洲最新av在线观看| 日韩一区二区三区在线欧洲| 国产又粗又猛又长又黄视频| 出差被公高潮久久中文字幕| 伊人网免费在线观看高清版 | 成人午夜爽爽爽免费视频| 国产三级不卡在线观看视频| 国语久精品在视频在线观看| 国产免费人成视频尤物| 欧美黄色成人真人视频| 亚洲精品中文字幕在线视频| 精产国品一二三区麻豆| 国产麻豆成人精品区在线观看| 日本高清不卡在线一区| 69久久精品亚洲一区二区| 丰满少妇被粗大猛烈进出视频| 亚洲另类欧美综合日韩精品| 神马午夜福利一区二区| 国产熟女一区二区三区四区| 亚洲国产性生活高潮免费视频| 欧美日韩亚洲国产精品| 亚洲精品日韩欧美精品| 在线观看国产午夜福利| 爱草草在线观看免费视频| 激情内射亚洲一区二区三区| 中文字幕一区二区三区大片| 高清免费在线不卡视频| 超薄肉色丝袜脚一区二区| 极品少妇嫩草视频在线观看| 精品人妻av区波多野结依| 成人精品日韩专区在线观看| 高清免费在线不卡视频| 成人欧美精品一区二区三区| 美女被后入福利在线观看| 久久精品少妇内射毛片|