diff --git a/game2048/grid_2048.py b/game2048/grid_2048.py
index 495a125f61f918e37c35e2b8e3bda1b70b4d8aea..c93da5bd4aac8c2a51cd02d6717048870966faa3 100644
--- a/game2048/grid_2048.py
+++ b/game2048/grid_2048.py
@@ -87,8 +87,33 @@ def grid_to_string_with_size_and_theme(grid, theme,n):
 def long_value_with_theme(grid,theme):
     return max(len(theme[v]) for v in get_all_tiles(grid))
 
-
-#FONCTIONNALITE 4
+# FONCTIONNALITE 3
+
+def read_player_command():
+    deplacements = {'g':"left",'d':"right",'h':"up",'b':"down"}
+    move = input("Entrez votre commande (g (gauche), d (droite), h (haut), b(bas)): ")
+    while move not in ['g','d','h','b']:
+        move = input("Commande invalide. \n Entrez votre commande (g (gauche), d (droite), h (haut), b(bas)): ")
+    return deplacements[move]
+
+def read_size_grid():
+    size = input("Choisissez la taille de la grille : ")
+    while True:
+        try:
+            size = int(size)
+        except:
+            size = input("Taille invalide, choisissez un nombre entier. \n Choisissez la taille de la grille : ")
+        else:
+            break
+    return size
+
+def read_theme_grid():
+    theme = input("Choisissez le numéro du thème : ")
+    while theme not in ['0','1','2']:
+        theme = input("Ce thème n'existe pas ! \n Choisissez le numéro du thème : ")
+    return THEMES[theme]
+    
+# FONCTIONNALITE 4
 
 def del_zeros(row):
     n = len(row)
diff --git a/game2048/test_grid_2048.py b/game2048/test_grid_2048.py
index 3acae3a0870aef18bc3e636a1ce84d8a527cee61..cf74e5a11df7fc1d11790350d27eb0f005a79e5e 100644
--- a/game2048/test_grid_2048.py
+++ b/game2048/test_grid_2048.py
@@ -1,6 +1,8 @@
 from game2048.grid_2048 import *
 from pytest import *
 
+# FONCTIONNALITE 1
+
 def test_create_grid():
     assert create_grid(0) == []
     assert create_grid(1) == [[' ']]
@@ -40,6 +42,8 @@ def test_init_game():
     assert 2 or 4 in tiles
     assert len(get_empty_tiles_positions(grid)) == 14
 
+#FONCTIONNALITE 2
+
 #def test_grid_to_string():
 #    a =""" === === === ===
 #    |   |   |   |   |
@@ -62,6 +66,13 @@ def test_long_value_with_theme():
     assert long_value_with_theme(grid,THEMES["1"]) == 2
     assert long_value_with_theme(grid,THEMES["2"]) == 1
 
+#FONCTIONNALITE 3
+
+def test_read_player_command(monkeypatch):
+     monkeypatch.setattr('builtins.input', lambda x: "d")
+
+# FONCTIONNALITE 4
+
 def test_move_row_left():
     assert move_row_left([0, 0, 0, 2]) == [2, 0, 0, 0]
     assert move_row_left([0, 2, 0, 4]) == [2, 4, 0, 0]