@@ -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
0 commit comments