X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fknight.c;fp=test%2Fknight.c;h=604be1ec984fa81ab97d0ee5ad9c83e2ecdaa184;hp=2835cd8b8d4689707dc07de372b6ef1c38b304ba;hb=64f44b13d30e0a7bc2921a9d43755423f81564fd;hpb=286b1e1135a99a4dd5844e5d45af42098155fab5 diff --git a/test/knight.c b/test/knight.c index 2835cd8b..604be1ec 100644 --- a/test/knight.c +++ b/test/knight.c @@ -33,7 +33,7 @@ * Eric S. Raymond July 22 1995. Mouse support * added September 20th 1995. * - * $Id: knight.c,v 1.32 2012/11/17 23:46:31 tom Exp $ + * $Id: knight.c,v 1.33 2012/12/09 00:14:28 tom Exp $ */ #include @@ -300,7 +300,7 @@ mark_possibles(int prow, int pcol, chtype mark) } } -static void +static bool find_next_move(int *y, int *x) { unsigned j, k; @@ -309,6 +309,7 @@ find_next_move(int *y, int *x) int next = 0; int oldy, oldx; int newy, newx; + bool result = FALSE; if (movecount > 1) { oldy = history[movecount - 1].y; @@ -335,9 +336,27 @@ find_next_move(int *y, int *x) *y = oldy + offsets[next].y; *x = oldx + offsets[next].x; } - } else { - beep(); + result = TRUE; } + return result; +} + +static void +count_next_moves(int y, int x) +{ + int count = 0; + unsigned j; + + wprintw(msgwin, "\nMove %d", movecount); + for (j = 0; j < SIZEOF(offsets); j++) { + int newy = y + offsets[j].y; + int newx = x + offsets[j].x; + if (chksqr(newy, newx)) { + ++count; + } + } + wprintw(msgwin, ", gives %d choices", count); + wclrtoeol(msgwin); } static void @@ -652,7 +671,10 @@ play(void) case 'a': nx = col; ny = rw; - find_next_move(&ny, &nx); + if (find_next_move(&ny, &nx)) + count_next_moves(ny, nx); + else + beep(); break; case 'F':