我正在製作一個類似於太空入侵者的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。使用睡眠的迴應有一個干擾重新繪製屏幕的問題。 –