*
* 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 <test.priv.h>
+#include <math.h>
#define NPEGS 3 /* This is not configurable !! */
#define MINTILES 3
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);
int
main(int argc, char **argv)
{
- int NTiles, FromCol, ToCol;
+ int FromCol, ToCol;
setlocale(LC_ALL, "");
Usage();
ExitProgram(EXIT_FAILURE);
}
-#ifdef TRACE
- trace(TRACE_MAXIMUM);
-#endif
initscr();
if (has_colors()) {
int i;
curs_set(0);
leaveok(stdscr, TRUE); /* Attempt to remove cursor */
}
- InitTiles(NTiles);
+ InitTiles();
DisplayTiles();
if (AutoFlag) {
do {
}
static void
-InitTiles(int NTiles)
+InitTiles(void)
{
int Size, SlotNo;
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,
" ");
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