-
Notifications
You must be signed in to change notification settings - Fork 0
/
GUI_Chessboard.h
120 lines (94 loc) · 4.59 KB
/
GUI_Chessboard.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
/**@file*/
#ifndef GUI_CHESSBOARD_H
#define GUI_CHESSBOARD_H
#include "Game.h"
#include "GUI_HelpForSDL.h"
#include "History.h"
#define GUI_SQUARE 90
#define START_X 20
#define START_Y 20
/**Struktura odpowiedzialna za graficzne przedstawienie szachownicy*/
typedef struct guichessboard_t
{
Game* game; ///<Informacje związane z rozgrywką
movetab Move_Tab;///<Szachownica z rodzajami ruchów
Square from;///<Pole z którego ma zostać wykonany ruch
Square Moves; ///<Pole na które ma zostać wykonany ruch
//Tekstury białych figur
SDL_Texture* Pawn_white_tx;///<biały pion
SDL_Texture* Rook_white_tx;///<biała wieża
SDL_Texture* Knight_white_tx;///<biały skoczek
SDL_Texture* Bishop_white_tx;///<biały goniec
SDL_Texture* Queen_white_tx;///<biała królowa
SDL_Texture* King_white_tx;///<biały król
//Tekstury czarnych figur
SDL_Texture* Pawn_black_tx;///<czarny pion
SDL_Texture* Rook_black_tx;///<czarna wieża
SDL_Texture* Bishop_black_tx;///<czarny goniec
SDL_Texture* Knight_black_tx;///<czarny skoczek
SDL_Texture* Queen_black_tx;///<czarna królowa
SDL_Texture* King_black_tx;///<czarny król
SDL_Renderer* renderer; //render
SDL_Rect location;// położenie szachownicy w oknie
}GUI_Chessboard;
/**Funkcja wyświetlająca wiadomość na ekranie który z graczy zwyciężył lub informację o remisie. Zwraca informację, czy gra została zakończona.
@param Chessboard szachownica
@return false jeśli gra nie została zakończona lub true jeśli gra została zakończona*/
bool GUI_EndOfGame(GUI_Chessboard* Chessboard);
/**Funkcja podświetla pole na którym stoi król na kolor czerwony jeżeli król aktualnego gracza jest w szachu
@param guichessboard szachownica
@param renderer render*/
void GUI_ColorKingSquareWhenCheck(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
/**Funkcja wyświetla okienko z informacją czy król aktualnego gracza jest w szachu
@param Chessboard szachownica*/
void UpdateTheChessboard(GUI_Chessboard* Chessboard);
/**Funkcja zwracająca wybrany kwadrat szachownicy
@param i numer wiersza
@param j numer kolumny
@return pole znajdujące się w i-tym wierszu i j-otej kolumnie*/
SDL_Rect GUI_ChessboardGetSquare(int i, int j);
/**Funkcja obsługuje kliknięcie lewym przyciskiem myszy w pole na szachownicy
@param guichessboard szachownica
@param i numer wiersza w którym znajduje się pole
@param j numer kolumny w której znajduje się pole*/
void GUI_MouseButtonLeftClick(GUI_Chessboard* guichessboard, int i, int j);
/**Funkcja obsługuje kliknięcie prawym przyciskiem myszy w pole na szachownicy
Zostaje wypełniona tabilca dozwolonych ruchów, jeżeli kliknięto właściwe pole.
@param guichessboard szachownica
@param i numer wiersza w którym znajduje się pole
@param j numer kolumny w której znajduje się pole*/
void GUI_MouseButtonRightClick(GUI_Chessboard* guichessboard, int i, int j);
/**Funkcja koloruje kwadraty ze względu na rodzaj ruchu jaki może zostać wykonany poprawnie wybraną figurą
@param guichessboard szachownica
@param renderer render*/
void GUI_ColorTheMoveSquares(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
/**Funkcja koloruje wybrane pole
@param guichessboard szachownica
@param renderer render*/
void GUI_ColorChosenSquare(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
/**Funkcja rysująca pustą szachownicę
@param guichessboard szachownica
@param renderer render*/
void GUI_DrawEmptyChessboard(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
/**Funkcja tworząca szachownicę, jeżeli nie udało się poprawnie zaalokować struktury funkcja zwraca NULL
@param renderer render
@param location położenie szachownicy
@param game struktura gry
@return utworzona szachownica lub NULL w przypadku, gdy nie udało się poprawnie utworzyć szachownicy*/
GUI_Chessboard* GUI_CreateChessboard(SDL_Renderer* renderer,SDL_Rect location ,Game* game);
/**Funkcja rysuje figury w odpowiednich miejscach na szachownicy
@param guichessboard szachownica
@param renderer render*/
void GUI_DrawPieces(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
/**Funkcja usuwająca szachownicę z pamięci komputera
@param guichessboard szachownica*/
void GUI_DestroyChessboard(GUI_Chessboard* guichessboard);
/**Funkcja obsługująca zdarzenia związane z szachownicą
@param guichessboard szachownica
@param event zdarzenie do obsłużenia*/
void GUI_handleChessboardEvent(GUI_Chessboard* guichessboard, SDL_Event* event);
/**Funkcja prezentująca szachownicę na ekranie
@param guichessboard szachownica
@param renderer render*/
void GUI_DrawChessboard(GUI_Chessboard* guichessboard, SDL_Renderer* renderer);
#endif