From 6d38eb746e86589e3b8fa10ba37d206af5eb7ebf Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Wed, 1 Jun 2016 19:41:17 -0700 Subject: Initial checking of tic tac toe minimax tutorial code. --- ver3/ttt.h | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 ver3/ttt.h (limited to 'ver3/ttt.h') diff --git a/ver3/ttt.h b/ver3/ttt.h new file mode 100644 index 0000000..115e5b9 --- /dev/null +++ b/ver3/ttt.h @@ -0,0 +1,79 @@ +#ifndef TTT_H_ +#define TTT_H_ + +#define ALPHA_BETA_SEARCH 1 + +#define TRUE (1) +#define FALSE (0) + +#define IN +#define OUT + +typedef unsigned int BOOL; + +// +// Constants for each state a board square can be in and a programmer +// defined type for these states. +// +#define X_MARK (-1) +#define EMPTY (0) +#define O_MARK (+1) +#define TIE (+2) +#define OPPOSITE_MARK(m) ((m) * -1) +#define X_OR_O(m) (((m) == X_MARK) || \ + ((m) == O_MARK)) + +typedef signed char SQUARE; +#define IS_SQUARE_EMPTY(x) (x == EMPTY) + +// +// A (simple) representation of a tic tac toe position +// +#define BOARD_SIZE (5) + +typedef struct _POSITION +{ + SQUARE sWhoseTurn; + SQUARE sBoard[BOARD_SIZE][BOARD_SIZE]; + int iVSums[BOARD_SIZE]; + int iHSums[BOARD_SIZE]; + int iDSums[2]; + unsigned int uNumEmpty; +} POSITION; + +#define NUM_TO_HPOS(x) ((x) % BOARD_SIZE) +#define NUM_TO_VPOS(x) ((x) / BOARD_SIZE) +#define VALID_SUM(x) (((x) <= BOARD_SIZE) && \ + ((x) >= -BOARD_SIZE)) + +// +// A representation of a move in a tic tac toe game +// +typedef unsigned int COORD; + +typedef struct _MOVE +{ + COORD cHpos; + COORD cVpos; + SQUARE sMark; +} MOVE; + +// +// Score values +// +#define INFINITY (+100) +#define DRAWSCORE (0) + +// +// An assert mechanism +// +#ifdef DEBUG +#define ASSERT(x) if (x) \ + { ; } \ + else \ + { (void) _assert(__FILE__, __LINE__); } +#else +#define ASSERT(x) ; +#endif /* DEBUG */ + +#endif /* TTT_H_ */ -- cgit v1.3