0
ncurses.hを使ってゲームのメニューを作成しています。この部分では、ユーザーが任意のキーを押すと、点滅するテキストを画面上に表示し、ループを終了するだけです。 conio.hでは、私は(完璧ではありませんでした)、これを使用:このため、入力を待たない文字を取得する
void start()
{
int i;
for (i = 0; i < 10; i++)
{
gotoxy(32, 18 - i);
printf("1024");
Sleep(200);
clrscr();
}
gotoxy(32, 8);
printf("1024");
gotoxy (35, 18);
while (!kbhit())
{
textcolor(15);
gotoxy (15, 15);
printf("Press any key to continue...");
if (kbhit() != 0)
Sleep(1000);
textcolor(0);
gotoxy (15, 15);
printf("Aperte qualquer tecla para continuar...");
if (kbhit() != 0)
break;
Sleep(500);
if (kbhit() != 0)
break;
}
textcolor(15);
fflush(stdin);
clrscr();
}
ncurses.hでは、私は同じことをやろうとしているが、getchは()は、ユーザの入力プログラムを待つように見えます実行を「一時停止」する。
void start()
{
int i, ch = 0;
for (i = 0; i < 10; i++)
{
attron(COLOR_PAIR(2));
move(18 - i, 32);
printw("1024");
refresh();
usleep(200 * 1000);
clear();
refresh();
}
move(18, 35);
while (1)
{
if (getch() != 0)
break;
attron(COLOR_PAIR(2));
move(15, 15);
printw("Aperte qualquer tecla para continuar...");
refresh();
usleep(1000 * 1000);
clear();
refresh();
move(15, 15);
printw("Aperte qualquer tecla para continuar...");
usleep(500 * 1000);
}
attroff(COLOR_PAIR(2));
system("clear");
}
解決方法? ありがとう!
ごめんなさい、申し訳ありませんが、私は特定の問題にタイムアウトまたはノードライを使用する方法がわかりません。ユーザーがx時間内に何かを押していないと、そのループを終了しますか? もし私がまだ何かを押すまで無期限にそのループに入りたいと思っていたら... ありがとうございました! – NeoFahrenheit
ここに私は今、untikを持っています: 'while(1) { wattron(win、COLOR_PAIR(CONTINUE_START_ON)); mvwprintw(勝利、18,25、 "続行するには、任意のキーを押してください"); wrefresh(win); napms(1000); wattron(win、COLOR_PAIR(CONTINUE_START_OFF)); mvwprintw(勝利、18,25、 "続行するには、任意のキーを押してください"); wrefresh(win); napms(1000); タイムアウト(10); if(getch()== ERR) break; } ' – NeoFahrenheit
breakout timeoutは役に立ちません。ループが1秒後に終了するためです。 –