社区讨论
爸爸们帮我看看代码有没有错误,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 条回复,欢迎继续交流。
正在加载回复...