社区讨论

爸爸们帮我看看代码有没有错误,Devc++运行不了

学术版参与者 5已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@m06rape9
此快照首次捕获于
2024/08/23 21:37
2 年前
此快照最后确认于
2024/08/24 09:09
2 年前
查看原帖
C
#include <ncurses.h>
#include <unistd.h>
#include <stdlib.h>
#include <vector>
 

struct Snake {
    std::vector<COORD> body;
    char direction;
};
 

void init(Snake &snake, COORD &food) {
    srand((unsigned)time(NULL));
    snake.body = {{10, 10}, {9, 10}, {8, 10}};
    snake.direction = 'w';
    food.x = rand() % 20 + 2;
    food.y = rand() % 20 + 2;
}
 

void draw(Snake &snake, COORD &food) {
    initscr();
    noecho();
    curs_set(0);
    keypad(stdscr, TRUE);
 
    while (1) {
        
        mvaddch(food.y, food.x, '*');
 
        
        for (auto &part : snake.body) {
            mvaddch(part.y, part.x, '#');
        }
 
        
        switch (snake.direction) {
            case 'w': --snake.body[0].y; break;
            case 's': ++snake.body[0].y; break;
            case 'a': --snake.body[0].x; break;
            case 'd': ++snake.body[0].x; break;
        }
 
        
        if (snake.body[0].x == food.x && snake.body[0].y == food.y) {
            snake.body.push_back(snake.body.back());
            food.x = rand() % 20 + 2;
            food.y = rand() % 20 + 2;
        }
 
        
        if (snake.body[0].x < 2 || snake.body[0].x > 20 || snake.body[0].y < 2 || snake.body[0].y > 20) {
            break;
        }
 
        
        refresh();
        sleep(1);
    }
 
    endwin();
}
 
int main() {
    Snake snake;
    COORD food;
    init(snake, food);
    draw(snake, food);
    return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...