Skip to content

Commit c9caa63

Browse files
committed
small bug fixes
1 parent e2afee1 commit c9caa63

4 files changed

Lines changed: 79 additions & 18 deletions

File tree

.github/workflows/tests.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,5 @@ jobs:
1919
sudo apt-get update
2020
sudo apt-get install -y build-essential pkg-config git cmake libcriterion-dev
2121
22-
23-
- name: Build project
24-
run: make
25-
2622
- name: Run tests
2723
run: make test

src/main.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,16 @@ int main(void)
210210
else if (strncmp(buffer, "go play", 7) == 0)
211211
{
212212
if (strncmp(buffer, "go play ui", 10) == 0)
213-
if (strncmp(buffer, "go play ui -w", 13) == 0)
213+
if (strncmp(buffer, "go play ui -wb", 14) == 0 || strncmp(buffer, "go play ui -bw", 14) == 0)
214+
ui_game_loop(current_fen, AvA);
215+
else if (strncmp(buffer, "go play ui -w", 13) == 0)
214216
ui_game_loop(current_fen, WHITE);
215-
else
217+
else if (strncmp(buffer, "go play ui -b", 13) == 0)
216218
ui_game_loop(current_fen, BLACK);
217219

220+
else
221+
ui_game_loop(current_fen, HvH);
222+
218223
else
219224
run_game(current_fen);
220225

src/ui/rendering.c

Lines changed: 66 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -245,27 +245,46 @@ int ui_game_loop(char *startpos, int color_ai)
245245
Chessboard board;
246246
init_chessboard_from_fen(&board, startpos);
247247
initialise_ai(color_ai);
248-
int clicked_square;
249248

249+
int clicked_square;
250250
bool running = true;
251+
int color;
251252
SDL_Event event;
253+
252254
draw_board(renderer);
253255
return_fen_code(&board, fen);
254256
render_fen(renderer, fen);
255257

256258
while (running)
257259
{
258-
259260
while (SDL_PollEvent(&event))
260261
{
261262
if (event.type == SDL_QUIT)
263+
{
262264
running = false;
265+
return 1;
266+
}
267+
268+
color = board.white_to_play ? WHITE : BLACK;
269+
270+
// === Cas IA vs IA === A CORRIGER: impossible de quitter la partie
271+
if (color_ai == 2)
272+
{
273+
Move move = get_best_move(board);
274+
play_move(&board, move);
275+
return_fen_code(&board, fen);
276+
SDL_RenderClear(renderer);
277+
draw_board(renderer);
278+
render_fen(renderer, fen);
279+
SDL_RenderPresent(renderer);
263280

264-
int square = get_colored_square(&event);
265-
int color = board.white_to_play ? WHITE : BLACK;
281+
// continue;
282+
}
266283

267-
if (color != color_ai)
284+
// === Cas Humain vs Humain (color_ai = -1) ===
285+
if (color_ai == -1)
268286
{
287+
int square = get_colored_square(&event);
269288
if (square != -1)
270289
{
271290
Move list_moves[250];
@@ -277,7 +296,6 @@ int ui_game_loop(char *startpos, int color_ai)
277296
nbmoves = set_moves(&board, list_moves, square, colored_squares, renderer);
278297
clicked_square = square;
279298
}
280-
281299
else
282300
{
283301
if (is_in_list(colored_squares, &square))
@@ -295,14 +313,50 @@ int ui_game_loop(char *startpos, int color_ai)
295313
render_fen(renderer, fen);
296314
}
297315
}
316+
317+
// === Cas Humain vs IA === // A CORRIGER!!!
298318
else
299319
{
300-
Move move = get_best_move(board);
301-
play_move(&board, move);
302-
return_fen_code(&board, fen);
303-
SDL_RenderClear(renderer);
304-
draw_board(renderer);
305-
render_fen(renderer, fen);
320+
if (color != color_ai) // tour du joueur humain
321+
{
322+
int square = get_colored_square(&event);
323+
if (square != -1)
324+
{
325+
Move list_moves[250];
326+
SDL_RenderClear(renderer);
327+
draw_board(renderer);
328+
329+
if (colored_squares->size == 0)
330+
{
331+
nbmoves = set_moves(&board, list_moves, square, colored_squares, renderer);
332+
clicked_square = square;
333+
}
334+
else
335+
{
336+
if (is_in_list(colored_squares, &square))
337+
{
338+
nbmoves = getlegalmoves(clicked_square, &board, list_moves);
339+
render_play_move(&board, list_moves, square, nbmoves);
340+
}
341+
342+
swap_color_squares(colored_squares, 1, renderer);
343+
list_free(colored_squares);
344+
list_init(colored_squares, sizeof(int));
345+
nbmoves = 0;
346+
}
347+
return_fen_code(&board, fen);
348+
render_fen(renderer, fen);
349+
}
350+
}
351+
else // tour de l'IA
352+
{
353+
Move move = get_best_move(board);
354+
play_move(&board, move);
355+
return_fen_code(&board, fen);
356+
SDL_RenderClear(renderer);
357+
draw_board(renderer);
358+
render_fen(renderer, fen);
359+
}
306360
}
307361
}
308362

src/ui/rendering.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
#include <SDL2/SDL_image.h>
1010
#include <stdbool.h>
1111

12+
enum
13+
{
14+
HvH = -1,
15+
AvA = 2,
16+
}; // pour l'attribut ia_color
17+
1218
#pragma once
1319
void draw_board(SDL_Renderer *renderer);
1420

0 commit comments

Comments
 (0)