【发布时间】:2020-10-26 20:35:44
【问题描述】:
我正在用 C 语言试验 Curses,由于某种原因,当我在运行程序时输入一个键时,球会改变方向。我不知道为什么;这可能是内存泄漏吗?我不知道该尝试什么,因为我是 C 的初学者。请提供任何指导!
#include <curses.h>
#include <stdbool.h>
typedef struct ball {
unsigned int x;
unsigned int y;
const char shape;
} Ball;
int main() {
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
curs_set(FALSE);
nodelay(stdscr, TRUE);
int maxY, maxX;
int pOneGoingRight = TRUE;
int pOneGoingDown = TRUE;
getmaxyx(stdscr, maxY, maxX);
char input;
Ball pOneBall = {0, 0, '*'};
// Ball *pOneBallPtr = &pOneBall;
while (1) {
clear();
getstr(&input);
if (input == 'q')
break;
mvprintw(0, 0, "Max y and x: %d, %d", maxY, maxX);
mvprintw(1, 0, "Ball y and x: %d, %d", pOneBall.y, pOneBall.x);
if (pOneBall.y == 0) pOneGoingDown = TRUE;
else if (pOneBall.y == maxY) pOneGoingDown = FALSE;
if (pOneBall.x == 0) pOneGoingRight = TRUE;
else if (pOneBall.x == maxX) pOneGoingRight = FALSE;
if (pOneGoingRight) pOneBall.x++;
else pOneBall.x--;
if (pOneGoingDown) pOneBall.y++;
else pOneBall.y--;
mvprintw(pOneBall.y, pOneBall.x, &pOneBall.shape);
refresh();
napms(100);
}
endwin();
return 0;
}
【问题讨论】:
标签: c pointers memory memory-leaks curses