C语言实现贪吃蛇代码怎么写

   2024-10-29 4520
核心提示:这是一个简单的C语言贪吃蛇游戏的代码示例:#include stdio.h#include conio.h#include windows.h#define WIDTH 20#define HEIGH

这是一个简单的C语言贪吃蛇游戏的代码示例:

#include <stdio.h>#include <conio.h>#include <windows.h>#define WIDTH 20#define HEIGHT 20int snakeX[100], snakeY[100];int snakeLength = 1;int fruitX, fruitY;int score = 0;int gameover = 0;char direction = 'r';void setup() {    snakeX[0] = WIDTH / 2;    snakeY[0] = HEIGHT / 2;    fruitX = rand() % WIDTH;    fruitY = rand() % HEIGHT;}void draw() {    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("#");            if (i == snakeY[0] && j == snakeX[0])                printf("O");            else if (i == fruitY && j == fruitX)                printf("F");            else {                int printSnake = 0;                for (int k = 1; k < snakeLength; k++) {                    if (i == snakeY[k] && j == snakeX[k]) {                        printf("o");                        printSnake = 1;                    }                }                if (!printSnake)                    printf(" ");            }            if (j == WIDTH - 1)                printf("#");        }        printf("\n");    }    for (int i = 0; i < WIDTH + 2; i++)        printf("#");    printf("\n");    printf("Score: %d", score);}void input() {    if (_kbhit()) {        switch (_getch()) {        case 'a':            direction = 'l';            break;        case 'd':            direction = 'r';            break;        case 'w':            direction = 'u';            break;        case 's':            direction = 'd';            break;        case 'x':            gameover = 1;            break;        }    }}void logic() {    int prevX = snakeX[0];    int prevY = snakeY[0];    int prev2X, prev2Y;    snakeX[0] = snakeX[0] + 1;    snakeY[0] = snakeY[0] + 1;    for (int i = 1; i < snakeLength; i++) {        prev2X = snakeX[i];        prev2Y = snakeY[i];        snakeX[i] = prevX;        snakeY[i] = prevY;        prevX = prev2X;        prevY = prev2Y;    }    switch (direction) {    case 'l':        snakeX[0]--;        break;    case 'r':        snakeX[0]++;        break;    case 'u':        snakeY[0]--;        break;    case 'd':        snakeY[0]++;        break;    }    if (snakeX[0] == fruitX && snakeY[0] == fruitY) {        score += 10;        snakeLength++;        fruitX = rand() % WIDTH;        fruitY = rand() % HEIGHT;    }    if (snakeX[0] >= WIDTH || snakeX[0] < 0 || snakeY[0] >= HEIGHT || snakeY[0] < 0)        gameover = 1;    for (int i = 1; i < snakeLength; i++) {        if (snakeX[0] == snakeX[i] && snakeY[0] == snakeY[i])            gameover = 1;    }}int main() {    setup();    while (!gameover) {        draw();        input();        logic();        Sleep(100);    }    return 0;}

请注意,这只是一个简单版本的贪吃蛇游戏,可能还需要进一步优化和完善。您可以根据自己的需求进行修改和扩展。

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号