From: Laurent Mazet Date: Fri, 18 Oct 2024 20:12:48 +0000 (+0200) Subject: clean wait for key function X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=9056b5f31d651e61dcb0aa9d70fbd851238b12d1;p=pacman.git clean wait for key function --- diff --git a/pacman.c b/pacman.c index 5ded060..8bc68c6 100644 --- a/pacman.c +++ b/pacman.c @@ -306,6 +306,8 @@ int main (int argc, char *argv[]) mode = 2; sprintf (msg, "End of game"); msgwindow (msg, xboard + (board->width - strlen (msg)) / 2, yboard + (board->height - 1) / 2, strlen (msg), 1); + waitforkey ('q'); + break; } int ch = getch (); @@ -329,18 +331,14 @@ int main (int argc, char *argv[]) case KEY_ESC: case 'h': helpwindow (help, xboard + (board->width - strmaxlen (help, '\n')) / 2, yboard + (board->height - strnbchr (help, '\n') - 1) / 2); - while (getch () == ERR) { - msleep (200); - } + waitforkey (0); tic (&turn); draw = 1; break; case 'p': sprintf (msg, "Game paused"); msgwindow (msg, xboard + (board->width - strlen (msg)) / 2, yboard + (board->height - 1) / 2, strlen (msg), 1); - while (getch () == ERR) { - msleep (200); - } + waitforkey (0); tic (&turn); draw = 1; break; @@ -361,10 +359,6 @@ int main (int argc, char *argv[]) break; } - if (mode == 2) { - continue; - } - /* game controls */ switch (ch) { case KEY_UP: diff --git a/time.c b/time.c index 2ccb9f6..7c0d9d1 100644 --- a/time.c +++ b/time.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -42,4 +43,15 @@ void msleep (int msec) usleep (msec * 1000); } +void waitforkey (char key) +{ + char c; + while ((c = getch ()) == ERR) { + if ((key) && (c == key)) { + break; + } + msleep (200); + } +} + /* vim: set ts=4 sw=4 et: */ diff --git a/time.h b/time.h index d991595..f4a29e7 100644 --- a/time.h +++ b/time.h @@ -13,6 +13,8 @@ int toc (timeval_t *t0); void msleep (int msec); +void waitforkey (char key); + #endif /* __TIME_H__ */ /* vim: set ts=4 sw=4 et: */