From 8bd5fe3b7bdb32065e6dfe28f3db1f994097c362 Mon Sep 17 00:00:00 2001
From: "sabrina.lapaire" <sabrina.lapaire@etu.hesge.ch>
Date: Mon, 24 Mar 2025 17:18:17 +0100
Subject: [PATCH] Modifier twoPlayers.c

---
 src/twoPlayers.c | 196 ++++-------------------------------------------
 1 file changed, 15 insertions(+), 181 deletions(-)

diff --git a/src/twoPlayers.c b/src/twoPlayers.c
index e0036b7..9d6b462 100644
--- a/src/twoPlayers.c
+++ b/src/twoPlayers.c
@@ -1,181 +1,15 @@
-#include "twoPlayers.h"
-
-int current_line(struct board board, int no_col){
-    int no_line = board.line-1;
-    while(board.data[no_line][no_col] != Vide){
-        no_line--;
-    }
-    return no_line;
-}
-
-bool is_full_board(struct board board){
-    for(int i = 0; i < board.line; i++){
-        for(int j = 0; j < board.col; j++){
-            if(board.data[i][j] == Vide){
-                return false;
-            }
-        }
-    }
-    return true;
-}
-
-bool row_of_four(struct board *board){
-    int sum = 0;
-    int i = 0;
-    int old_i = -1;
-    while(i < board->col){
-        old_i = i;
-        i++;
-        if(board->data[board->last_pos_x][i] == board->last_symbole && board->data[board->last_pos_x][old_i] == board->last_symbole){
-            sum++;
-        }
-    }
-    if(sum >= 4){
-        return true;
-    }
-    return false;
-}
-
-bool col_of_four(struct board *board){
-    int sum = 0;
-    int i = board->line -1;
-    int old_i = -1;
-    while(i >= 0){
-        old_i = i;
-        if(board->data[i][board->last_pos_y] == board->last_symbole && board->data[old_i][board->last_pos_y] == board->last_symbole){
-            sum++;
-        }
-        i--;
-    }
-    if(sum >= 4){
-        return true;
-    }
-    return false;
-}
-
-bool diag_of_four_left_right(struct board *board){
-    int sum = 1; // Nous commençons à 1 car le dernier symbole est déjà compté
-    int current_x = board->last_pos_x;
-    int current_y = board->last_pos_y;
-    int oldx = -1;
-    int oldy = -1;
-
-    // Vérification de la diagonale supérieure gauche à la diagonale inférieure droite
-    while (current_x > 0 && current_y > 0) {
-        oldx = current_x;
-        oldy = current_y;
-        current_x--;
-        current_y--;
-        
-        if (board->data[current_x][current_y] == board->last_symbole && board->data[oldx][oldy] == board->last_symbole) {
-            sum++; // Increment only if we find consecutive symbols
-        }
-    }
-
-    // Réinitialisation des coordonnées
-    current_x = board->last_pos_x;
-    current_y = board->last_pos_y;
-
-    // Vérification de la diagonale inférieure droite à la diagonale supérieure gauche
-    while (current_x < board->line - 1 && current_y < board->col - 1) {
-        oldx = current_x;
-        oldy = current_y;
-        current_x++;
-        current_y++;
-        
-        if (board->data[current_x][current_y] == board->last_symbole && board->data[oldx][oldy] == board->last_symbole) {
-            sum++; // Increment only if we find consecutive symbols
-        }
-    }
-
-    // Vérifie si sum est exactement égal à 4
-    if (sum == 4) {
-        return true; // We found 4 consecutive symbols
-    }
-    return false; // No 4 consecutive symbols found
-}
-
-bool diag_of_four_right_left(struct board *board){
-    int sum = 1; // On commence à 1 car le dernier symbole est déjà compté
-    int current_x = board->last_pos_x;
-    int current_y = board->last_pos_y;
-    int oldx = -1;
-    int oldy = -1;
-
-    // Vérification de la diagonale montante gauche à la diagonale descendante droite
-    while (current_x >= 0 && current_y < board->col - 1) {
-        oldx = current_x;
-        oldy = current_y;
-        current_x--;
-        current_y++;
-        
-        if (board->data[current_x][current_y] == board->last_symbole && board->data[oldx][oldy] == board->last_symbole) {
-            sum++; // Incrémenter seulement si les symboles sont consécutifs
-        }
-    }
-
-    // Réinitialisation des coordonnées
-    current_x = board->last_pos_x;
-    current_y = board->last_pos_y;
-
-    // Vérification de la diagonale descendante gauche à la diagonale montante droite
-    while (current_x < board->line - 1 && current_y >= 0) {
-        oldx = current_x;
-        oldy = current_y;
-        current_x++;
-        current_y--;
-        
-        if (board->data[current_x][current_y] == board->last_symbole && board->data[oldx][oldy] == board->last_symbole) {
-            sum++; // Incrémenter seulement si les symboles sont consécutifs
-        }
-    }
-
-    // Vérifie si sum est exactement égal à 4
-    if (sum == 4) {
-        return true; // Si 4 symboles consécutifs sont trouvés, retourner true
-    }
-    return false; // Sinon, retourner false
-}
-
-bool winner(struct board board){
-    if(row_of_four(&board) || diag_of_four_left_right(&board) || diag_of_four_right_left(&board) || col_of_four(&board)){
-        return true;
-    }
-    return false;
-}
-
-
-void play(struct board board){
-    int no_col = 0;
-    int no_line = 0;
-    int no_round = 1;
-    while(!is_full_board(board)){
-        printf("Column number? (starts at 1):");
-        scanf("%d", &no_col);
-        no_line = current_line(board,no_col - 1);
-        if(no_round % 2 != 0){
-            board.data[no_line][no_col - 1] = Croix;
-            board.last_symbole = Croix;
-        }
-        else{
-            board.data[no_line][no_col - 1] = Cercle;
-            board.last_symbole = Cercle;
-        }
-        board.last_pos_x = no_line;
-        board.last_pos_y = no_col - 1;
-        print_game(&board);
-        if(winner(board)){
-            if(board.last_symbole == Croix){
-                printf("Player one won\n");
-            }
-            else if(board.last_symbole == Cercle){
-                printf("Player two won\n");
-            }
-            break;
-        }
-        no_round++;
-    }
-    if(is_full_board(board)){
-        printf("It is a draw\n");
-    }
-}
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include "board.h"
+
+#ifndef twoplayers_h
+#define twoplayers_h
+int current_line(struct board board, int no_col);
+bool is_full_board(struct board board);
+bool row_of_four(struct board *board);
+bool diag_of_four_left_right(struct board *board);
+bool diag_of_four_right_left(struct board *board);
+bool winner(struct board board);
+void play(struct board board);
+#endif
-- 
GitLab