2015-03-07 17:18:50 +01:00
|
|
|
#ifndef PLAYERLIB_H
|
|
|
|
#define PLAYERLIB_H
|
|
|
|
|
2015-03-12 22:52:29 +01:00
|
|
|
const int fieldSize=8, maxMoves=100; // =fieldHeight=fieldWidth
|
2015-03-13 04:06:26 +01:00
|
|
|
extern unsigned int endgame;
|
2015-03-11 23:26:52 +01:00
|
|
|
|
2015-03-08 19:16:27 +01:00
|
|
|
extern char enemyc; //initially 0, contains char of enemy's stone
|
2015-03-11 11:28:20 +01:00
|
|
|
extern char ownc;
|
2015-03-10 13:54:11 +01:00
|
|
|
struct cell {
|
|
|
|
char content = '.';
|
|
|
|
unsigned short int timesVisited = 0;
|
|
|
|
};
|
2015-03-11 11:28:20 +01:00
|
|
|
struct move {
|
|
|
|
unsigned int turnRow;
|
|
|
|
unsigned int turnCol;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct movesList {
|
|
|
|
unsigned int movesNumber = 0;
|
2015-03-12 22:52:29 +01:00
|
|
|
move *list = new move[maxMoves](); //eigentlich maximal 8*8-4 Lösungen, aber manche doppelt? -> Reserve
|
2015-03-11 11:28:20 +01:00
|
|
|
};
|
|
|
|
|
2015-03-13 04:06:26 +01:00
|
|
|
struct gameTree{
|
|
|
|
int evaluation;
|
|
|
|
move nodeMove;
|
|
|
|
gameTree *childMove = NULL;
|
|
|
|
unsigned int numChildMoves=0;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct evalMove{
|
|
|
|
int evaluation;
|
|
|
|
move m;
|
|
|
|
};
|
|
|
|
|
2015-03-07 17:18:50 +01:00
|
|
|
//returns the character used for the enemy's stones
|
2015-03-08 18:40:31 +01:00
|
|
|
extern char getEnemyChar(char);
|
2015-03-10 13:54:11 +01:00
|
|
|
//reads the stateBuffer string into a 2d matrix
|
2015-03-12 15:23:47 +01:00
|
|
|
extern int readStateBuffer(char*, cell (*)[fieldSize], unsigned int *, unsigned int *);
|
2015-03-07 17:18:50 +01:00
|
|
|
|
2015-03-12 11:50:39 +01:00
|
|
|
//iterates through field in all directions, stores moves into movesList
|
|
|
|
int findMoves(cell (*)[fieldSize], movesList *);
|
2015-03-12 15:56:23 +01:00
|
|
|
|
|
|
|
//returns 1 if move on corner field
|
|
|
|
int isCornerField(move);
|
2015-03-12 17:09:34 +01:00
|
|
|
//returns 1 if move on C or C field
|
|
|
|
int isCOrXField(move);
|
2015-03-07 17:18:50 +01:00
|
|
|
#endif
|