我正在制作类似于太空入侵者的 ncurses 游戏。
到目前为止,我已经获得了移动和击落,但我遇到了一个问题。
当玩家发射激光时,我正在使用睡眠调用来延迟激光在屏幕上的移动,这样它就不会只从屏幕的一端显示到另一端。
使用 usleep 来延迟激光的问题意味着玩家在激光穿过屏幕时无法移动,直到循环退出。
我的问题是,是否有另一种方法可以打印在屏幕上移动的激光,同时通过用户输入移动播放器/光标?
当用户按下“f”键时,以下代码会在屏幕上移动线(激光)。然而,在激光离开屏幕之前,用户不能再次移动:
void combat(int y, int x)
{
do
{
mvprintw(y -1, x, "|");
refresh();
y--;
usleep(50000);
mvprintw(y , x, " ");
}
while(y>0);
}