Add "naive mode " Algorithm
parent
909d9bc0c7
commit
d190e3e12e
15
ai.h
15
ai.h
|
@ -2,6 +2,16 @@
|
|||
|
||||
// #define AI_DEBUG
|
||||
|
||||
#define AI_NAIVE 1
|
||||
#define AI_NOT_NAIVE 0
|
||||
int AI_NAIVE_MODE = ; // switches 'naive mode'
|
||||
|
||||
#define AI_DEPTH_EASY 3
|
||||
#define AI_DEPTH_MEDIUM 3
|
||||
#define AI_DEPTH_HARD 5
|
||||
#define AI_DEPTH_SUPERHARD 9
|
||||
int AI_DEPTH = 3;
|
||||
|
||||
int miniMaxHandler(struct GAME* game, int turn, int maxDepth)
|
||||
{
|
||||
struct GAME game_copy = *game;
|
||||
|
@ -122,10 +132,13 @@ int miniMaxField(struct FIELD field, int turn, int maxDepth, int curDepth, int*
|
|||
}
|
||||
}
|
||||
|
||||
if (!NAIVE_MODE)
|
||||
{
|
||||
if (FCheckFieldDraw(&field) && FCheckFieldWin(&field) == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return peakScore;
|
||||
}
|
||||
|
@ -136,7 +149,7 @@ int AIMakeMove(struct GAME* game)
|
|||
{
|
||||
int retX, retY;
|
||||
miniMaxField(game->gameMap.FMap[game->lockedX][game->lockedY],
|
||||
game->turn, 9, 1, &retX, &retY);
|
||||
game->turn, AI_DEPTH, &retX, &retY);
|
||||
GMakeMove(game, game->lockedX, game->lockedY, retX, retY, game->turn);
|
||||
}
|
||||
|
||||
|
|
26
glUI.h
26
glUI.h
|
@ -356,6 +356,32 @@ void settingsClickHandler(float x, float y)
|
|||
{
|
||||
SettingDifLevel = EASY;
|
||||
}
|
||||
|
||||
switch (SettingDifLevel)
|
||||
{
|
||||
case EASY:
|
||||
AI_NAIVE_MODE = AI_NAIVE;
|
||||
AI_DEPTH = AI_DEPTH_MEDIUM;
|
||||
break;
|
||||
|
||||
case MEDIUM:
|
||||
AI_NAIVE_MODE = AI_NAIVE;
|
||||
AI_DEPTH = AI_DEPTH_MEDIUM;
|
||||
break;
|
||||
|
||||
case HARD:
|
||||
AI_NAIVE_MODE = AI_NOT_NAIVE;
|
||||
AI_DEPTH = AI_DEPTH_HARD;
|
||||
break;
|
||||
|
||||
case SUPERHARD:
|
||||
AI_NAIVE_MODE = AI_NOT_NAIVE;
|
||||
AI_DEPTH = AI_DEPTH_SUPERHARD;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
5
main.c
5
main.c
|
@ -139,7 +139,10 @@ int main(int argc, char **argv)
|
|||
ScreenState = STATE_MAIN_MENU;
|
||||
|
||||
SettingFirst = FIRST_CROSS;
|
||||
SettingDifLevel = EASY;
|
||||
SettingDifLevel = MEDIUM;
|
||||
AI_DEPTH = AI_DEPTH_MEDIUM;
|
||||
AI_NAIVE_MODE = AI_NAIVE;
|
||||
|
||||
initMenuButton(0.6, 0.95, 0.0, 0.85, &moveBtn);
|
||||
initMenuButton(0.6, 0.8, 0.0, 0.7, &difBtn);
|
||||
|
||||
|
|
Loading…
Reference in New Issue