我正在制作一个类似于太空入侵者的ncurses游戏。如何用ncurses同时打印两件东西
到目前为止,我已经移动并击落了,但是我遇到了一个问题。
当玩家发射激光时,我使用呼叫延迟激光在屏幕上移动,以便它不会从屏幕的一端显示到另一端。
使用usleep延迟激光的问题意味着,当激光在屏幕上行进时,玩家不能四处移动,直到环路退出。
我的问题是,是否有另一种方式来打印激光在屏幕上移动,同时通过用户输入移动播放器/光标?
当用户按下'f'键时,下面的代码在屏幕上移动线条(激光)。但是,用户在激光离开屏幕之后才能再次移动:
void combat(int y, int x)
{
do
{
mvprintw(y -1, x, "|");
refresh();
y--;
usleep(50000);
mvprintw(y , x, " ");
}
while(y>0);
}
usleep的组合(50毫秒)和NODELAY是多余的。你可以使用超时(50毫秒) - 循环外 - 并获得相同的效果。另外,usleep不是一个诅咒功能; curses提供了napms。使用睡眠的回应有一个干扰重新绘制屏幕的问题。 –