diff --git a/src/board.c b/src/board.c
index f375dc52965461d41ff3c75c416e3d42ecc8aa8c..4c4863d120a616e59cee70f244887c5c679b7a25 100644
--- a/src/board.c
+++ b/src/board.c
@@ -1,12 +1,69 @@
 #include "board.h"
 
-void init(int col, int line){
+struct board create_board(int col, int line){
     struct board board;
+    board.data = malloc(sizeof(struct board) * line);
+    for(int i = 0; i < line; i++){
+        board.data[i] = malloc(sizeof(struct board)*col);
+    }
     board.col = col;
     board.line = line;
-    for(int i = 0; i < col;i++){
-        for(int j = 0; j < line; j++){
-            board.data[i][j] = Vide;
+    return board;
+}
+
+void init_board(struct board *board){
+    for(int i = 0; i < board->line;i++){
+        for(int j = 0; j < board->col; j++){
+            board->data[i][j] = Vide;
+        }
+    }
+}
+
+void print_game(struct board *board){
+    printf("┌");
+    for(int i = 1; i < board->col; i++){
+        printf("─┬");
+    }
+    printf("─┐\n");
+
+    for(int i = 0; i < board->line;i++){
+        printf("│");
+        for(int j = 0; j < board->col; j++){
+            if(board->data[i][j] == Vide){
+                printf(" │");
+            }
+            if(board->data[i][j] == Croix){
+                printf("X│");
+            }
+            if(board->data[i][j] == Cercle){
+                printf("O│");
+            }
         }
+        if(i != board->line-1){
+            printf("\n├");
+            for(int i = 1; i < board->col; i++){
+                printf("─┼");
+            }
+            printf("─┤\n");
+        }
+        else{
+            printf("\n");
+        }
+    }
+    printf("â””");
+    for(int i = 1; i < board->col; i++){
+        printf("─┴");
+    }
+    printf("─┘\n");
+    for(int i = 1; i <= board->col; i++){
+        printf(" %d", i);
+    }
+    printf("\n");
+}
+
+void free_board(struct board *board){
+    for(int i = 0; i < board->line;i++){
+        free(board->data[i]);
     }
+    free(board->data);
 }
\ No newline at end of file