X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fhanoi.c;h=4e4e7051148a1947390c7e3413af080d71a6caff;hp=02eade7c330649aa119195ca05b07bc67b9e649e;hb=64f44b13d30e0a7bc2921a9d43755423f81564fd;hpb=286b1e1135a99a4dd5844e5d45af42098155fab5;ds=sidebyside diff --git a/test/hanoi.c b/test/hanoi.c index 02eade7c..4e4e7051 100644 --- a/test/hanoi.c +++ b/test/hanoi.c @@ -41,10 +41,11 @@ * * Date: 05.Nov.90 * - * $Id: hanoi.c,v 1.32 2012/06/09 20:30:32 tom Exp $ + * $Id: hanoi.c,v 1.34 2012/12/08 16:41:56 tom Exp $ */ #include +#include #define NPEGS 3 /* This is not configurable !! */ #define MINTILES 3 @@ -84,10 +85,11 @@ static short TileColour[] = COLOR_MAGENTA, /* Length 17 */ COLOR_RED, /* Length 19 */ }; +static int NTiles = 0; static int NMoves = 0; static bool AutoFlag = FALSE; -static void InitTiles(int NTiles); +static void InitTiles(void); static void DisplayTiles(void); static void MakeMove(int From, int To); static void AutoMove(int From, int To, int Num); @@ -99,7 +101,7 @@ static int InvalidMove(int From, int To); int main(int argc, char **argv) { - int NTiles, FromCol, ToCol; + int FromCol, ToCol; setlocale(LC_ALL, ""); @@ -130,9 +132,6 @@ main(int argc, char **argv) Usage(); ExitProgram(EXIT_FAILURE); } -#ifdef TRACE - trace(TRACE_MAXIMUM); -#endif initscr(); if (has_colors()) { int i; @@ -155,7 +154,7 @@ main(int argc, char **argv) curs_set(0); leaveok(stdscr, TRUE); /* Attempt to remove cursor */ } - InitTiles(NTiles); + InitTiles(); DisplayTiles(); if (AutoFlag) { do { @@ -211,7 +210,7 @@ InvalidMove(int From, int To) } static void -InitTiles(int NTiles) +InitTiles(void) { int Size, SlotNo; @@ -232,7 +231,7 @@ DisplayTiles(void) erase(); MvAddStr(1, 24, "T O W E R S O F H A N O I"); MvAddStr(3, 34, "SJR 1990"); - MvPrintw(19, 5, "Moves : %d", NMoves); + MvPrintw(19, 5, "Moves : %d of %.0f", NMoves, pow(2.0, NTiles) - 1); (void) attrset(A_REVERSE); MvAddStr(BASELINE, 8, " "); @@ -310,12 +309,12 @@ AutoMove(int From, int To, int Num) if (Num == 1) { MakeMove(From, To); napms(500); - return; + } else { + AutoMove(From, OTHER(From, To), Num - 1); + MakeMove(From, To); + napms(500); + AutoMove(OTHER(From, To), To, Num - 1); } - AutoMove(From, OTHER(From, To), Num - 1); - MakeMove(From, To); - napms(500); - AutoMove(OTHER(From, To), To, Num - 1); } static int