-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchess.h
142 lines (138 loc) · 4.99 KB
/
chess.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#ifndef _CHESS
#define _CHESS
#include <string.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <limits.h>
struct GTKmainGrid {
int posX,lenX,posY,lenY,index;
};
struct GTKmenuGrid {
int posX,lenX,posY,lenY,index;
char name[20];
};
struct boardConfiguration {
char figurePlacement[64];
int roundCounter;
int lastMoveOrigin;
bool gameOver;
bool blackKingDidNotMove;
bool whiteKingDidNotMove;
bool leftBlackRookDidNotMove;
bool rightBlackRookDidNotMove;
bool leftWhiteRookDidNotMove;
bool rightWhiteRookDidNotMove;
};
extern struct GTKmainGrid tabGrid[];
extern struct GTKmenuGrid menuGrid[];
extern struct boardConfiguration lastTurnBoardConfiguration;
extern int roundCounter;
extern GtkWidget* label;
extern int UISelectedTile;
extern int iFrom;
extern int iWhere;
extern char globalFigurePlacement[];
extern int globalTransitionalLegalMoveTab[];
extern int globalFinalLegalMoveTab[];
extern int gameResult;
extern int lastMoveOrigin;
extern bool gameOver;
extern bool blackKingDidNotMove;
extern bool whiteKingDidNotMove;
extern bool leftBlackRookDidNotMove;
extern bool rightBlackRookDidNotMove;
extern bool leftWhiteRookDidNotMove;
extern bool rightWhiteRookDidNotMove;
//Knight Mini-game
extern char KGg_FigurePlacement[];
extern int KGglobalTransitionalLegalMoveTab[];
extern int KGglobalFinalLegalMoveTab[];
extern int KGUISelectedTile;
extern bool KGGameOver;
extern bool KGGameWon;
extern GtkWidget* KGplayAgainButton;
extern GtkWidget* KGgameOverLabel;
//GTK
extern GtkWidget* chessGameWindow;
extern GtkWidget* menuWindow;
extern GtkWidget* creditsWindow;
extern GtkWidget* chessBoardGrid;
extern GtkWidget* knightGameWindow;
extern GtkWidget* knightGameChessBoardGrid;
extern GtkWidget* timer;
extern GtkWidget* playAgainButton;
extern GtkWidget* gameOverLabel;
extern int sec_expired;
extern int sec_expired_white;
extern int sec_expired_black;
extern const int clock_time;
extern guint timer_id;
//AI
extern bool AI_on;
extern int DEPTH;
void eventHandler(GtkWidget* clickedTile, gpointer data);
void startingChessLayout();
char whoseTurn();
char getFigureType(int tileIndex, char figurePlacement[]);
char getFigureSide(int tileIndex, char figurePlacement[]);
bool isEnemy(int selectedTileIndex, int possibleEnemyIndex, char figurePlacement[]);
int kingIndex(char side, char figurePlacement[]);
int howManyFigures(char figurePlacement[]);
void resetLegalMoveTables(int transitionalLegalMoveTab[], int finalLegalMoveTab[]);
void moveFigureToTile(int selectedTileIndex, int actionTileIndex, int legalMoveTable[], char figurePlacement[]);
void setLegalMoves(int selectedTileIndex, int finalLegalMoveTab[], int transitionalLegalMoveTab[], char figurePlacement[]);
void drawBoard (GtkWidget* grid, char figurePlacement[]);
void resetBoardColors(GtkWidget* grid);
void drawLegalMoves(GtkWidget* boardGrid, int legalMoveTab[]);
void myCSS(void);
void changeTurnLabel(GtkWidget* label);
void drawUI(GtkWidget* grid, char figurePlacement[], int legalMoveTab[]);
void drawLastMove(GtkWidget* boardGrid);
void checkMoveCheckLegality(int selectedTileIndex, int finalLegalMoveTab[], char figurePlacement[]);
int* checkedTiles(char figurePlacement[]);
void isGameOver();
void moveFigureLogic(int selectedTileIndex, int actionTileIndex, int legalMoveTable[], char figurePlacement[]);
void menuHandler();
void saveCurrentConfiguration();
void loadConfiguration();
void reverseLastMove(GtkWidget* menuButton, gpointer data);
void saveConfigurationToFile();
void loadConfigurationFromFile();
void loadBoardConfigurationFromFile(GtkWidget* menuButton, gpointer data);
void saveBoardConfigurationToFile(GtkWidget* menuButton, gpointer data);
void resetGameState();
void resetUIState();
void changeTurnTimers();
gboolean timer_update(gpointer data);
void playAgain();
//Knight Mini-game
void knightGameEventHandler (GtkWidget* menuButton, gpointer data);
void startingKnightLayout();
void KGSetLegalMoves (int selectedTileIndex, int finalLegalMoveTab[], int transitionalLegalMoveTab[], char figurePlacement[]);
void KGResetLegalMoveTables(int transitionalLegalMoveTab[], int finalLegalMoveTab[]);
void KGMoveFigureLogic(int selectedTileIndex, int actionTileIndex, int legalMoveTable[], char figurePlacement[]);
void KGIsGameOver();
void KGdrawUI(GtkWidget* grid, char figurePlacement[], int legalMoveTab[]);
//void displayEngGameMessage(bool didWin);
void KGLoadingSequence();
void KGplayAgain();
void KGGameEnd();
//AI
double minmax(int deepth, char board[], int fromTile, int whereTile, int fromWhereLegalmoveTab, double alfa, double beta);
void wagesUpdate();
double evaluateBoard(char board[]);
//GTK
void exitWithButton( GtkWidget *widget, gpointer data);
void createCreditsWindow();
void createMenuWindow();
void createKnightMGWindow();
void createChessGameWindow();
void set_timer(gpointer data);
void chessGameOver();
void initializeMenuGrid();
void initializeTabGrid();
#endif //_CHESS