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