diff --git a/app/src/main/java/controller/GameController.java b/app/src/main/java/controller/GameController.java
index ca61561a712779bb16a7bfa899880cdc5b4fbc3e..aac5b1e55b6e6e92005758242d076c0cbd741aec 100644
--- a/app/src/main/java/controller/GameController.java
+++ b/app/src/main/java/controller/GameController.java
@@ -160,7 +160,7 @@ public class GameController {
         // TODO
         //  Player player = ... instantiate a ComputerPlayer named "cyclic" that follows the cyclic strategy
         //  game.setPlayer(player);
-        Player player= new ComputerPlayer("Robin", getGridStartCell(), new CyclicStrategy(availableColors));
+        Player player= new ComputerPlayer("cyclic", getGridStartCell(), new CyclicStrategy(availableColors));
         game.setPlayer(player);
     }
 
diff --git a/app/src/main/java/model/ArrayGrid.java b/app/src/main/java/model/ArrayGrid.java
index da968c26f993b4140c3366cc1509e25f2f0a71b0..e60f806a4fb6cc1f9b3d0ab41ba545519ee2f899 100644
--- a/app/src/main/java/model/ArrayGrid.java
+++ b/app/src/main/java/model/ArrayGrid.java
@@ -23,18 +23,18 @@ public class ArrayGrid implements Grid{
 
                 }
             }
-            int mx[] = {0, 0, -1, 1};
-            int my[] = {-1, 1, 0, 0};
+            int x[] = {0, 0, -1, 1};
+            int y[] = {-1, 1, 0, 0};
             for (int rowIndex= 0; rowIndex < numberOfRows ; rowIndex++) {
                 for (int columnIndex = 0; columnIndex < numberOfColumns; columnIndex++) {
 
                     // Adding neighbor list
                     List<Cell> neighbors = new ArrayList<Cell>();
                     for(int k = 0; k < 4; k++){
-                        int c_x = rowIndex + mx[k];
-                        int c_y = columnIndex + my[k];
-                        if (c_x >= 0 && c_x < numberOfRows & c_y >= 0 && c_y < numberOfColumns) {
-                            neighbors.add(this.cells[c_x][c_y]);
+                        int cellX = rowIndex + x[k];
+                        int cellY = columnIndex + y[k];
+                        if (cellX >= 0 && cellX < numberOfRows & cellY >= 0 && cellY < numberOfColumns) {
+                            neighbors.add(this.cells[cellX][cellY]);
                         }
 
                     }
diff --git a/app/src/main/java/model/RandomWalk.java b/app/src/main/java/model/RandomWalk.java
index 6acc7b55e779aa279f47862eb53647d63b99ef3a..29103484f0e5cfd9ddd39ba621291d7580521d2f 100644
--- a/app/src/main/java/model/RandomWalk.java
+++ b/app/src/main/java/model/RandomWalk.java
@@ -3,9 +3,7 @@ package model;
 import javafx.scene.paint.Color;
 import util.RandomUtil;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 public class RandomWalk implements PlayStrategy{
     private List<Color> colors;
@@ -19,11 +17,20 @@ public class RandomWalk implements PlayStrategy{
     }
     @Override
     public Color play(Cell startCell) {
-        List<Color>colorNeighbor=new ArrayList<Color>();
-        for(Cell cell:startCell.getNeighbours())
-            colorNeighbor.add(cell.getColor());
-        if (colorNeighbor.contains(startCell.getColor())){
-            colorNeighbor.remove(startCell.getColor());}
-        return RandomUtil.randomElement(colorNeighbor,this.randomColor);
+        // choisir une des couleurs des voisins qui est différent que startCell (où on est)
+        Set<Color> colorNeighbor=new HashSet<Color>();
+
+        ColoredCellIterator colored_iterator = new ColoredCellIterator(startCell);
+
+        while(colored_iterator.hasNext()){
+            Cell current_cell = colored_iterator.next();
+            List<Cell> current_neighbors = current_cell.getNeighbours();
+            for(Cell c : current_neighbors){
+                if(c.getColor() != startCell.getColor())
+                    colorNeighbor.add(c.getColor());
+            }
+        }
+
+        return RandomUtil.randomElement(new ArrayList<Color>(colorNeighbor),this.randomColor);
     }
 }