From 26c5ffb94b6bd8bdd36f4e873543d466f6a54cc2 Mon Sep 17 00:00:00 2001 From: EL GAOUAL Zaid <zaid.el-gaoual@etu.univ-amu.fr> Date: Fri, 18 Nov 2022 21:01:14 +0100 Subject: [PATCH] Strategy walk --- .../main/java/controller/GameController.java | 4 +- app/src/main/java/model/CellGridIterator.java | 89 +++++++++++++------ app/src/main/java/model/ComputerPlayer.java | 4 +- app/src/main/java/model/FloodGame.java | 4 +- 4 files changed, 70 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/controller/GameController.java b/app/src/main/java/controller/GameController.java index 6f9b165..4c8d0e7 100644 --- a/app/src/main/java/controller/GameController.java +++ b/app/src/main/java/controller/GameController.java @@ -138,8 +138,8 @@ public class GameController { @FXML public void setPlayerRandom() { // TODO - // Player player = ... instantiate a ComputerPlayer named "random" that follows the random strategy - // game.setPlayer(player); +// Player player = ... instantiate a ComputerPlayer named "random" that follows the random strategy +// game.setPlayer(player); } @FXML public void setPlayerRobin() { diff --git a/app/src/main/java/model/CellGridIterator.java b/app/src/main/java/model/CellGridIterator.java index a68056a..12b9f15 100644 --- a/app/src/main/java/model/CellGridIterator.java +++ b/app/src/main/java/model/CellGridIterator.java @@ -3,38 +3,77 @@ package model; import java.util.Iterator; public class CellGridIterator implements Iterator<Cell> { - public ArrayGrid grid; - public int row; - public int column; - - CellGridIterator(ArrayGrid grid) { - this.grid=grid; - this.row=0; - this.column=0; + + + private ArrayGrid grid; + private int PrvColmn; + private int PrvRow; + private int ActColmn; + private int ActRow; + + + CellGridIterator(ArrayGrid grid){ + + PrvRow=ActRow=0; + PrvColmn=ActColmn=0; + this.grid=grid; + + + } - @Override - public boolean hasNext() { - if((this.row==grid.getNumberOfRows()-1 && this.column==grid.getNumberOfColumns()-1)) { - return false; - } - return true; + + + + + + public + boolean hasNext ( ) { + return hasNextRow ()|| hasNextCol (); + } + + public + Boolean hasNextCol (){ + + + return !(grid.getNumberOfColumns ()==ActColmn); + } - @Override - public Cell next() { - if (hasNext()) { - if (this.column >= 0 && this.column < grid.getNumberOfColumns()-1) { - this.column++; - } else if (this.column == grid.getNumberOfColumns()-1 && this.row < grid.getNumberOfRows()-1) { - this.column = 0; - this.row++; - } - - return grid.getCell(row, column); + public Boolean hasNextRow(){ + + + return !(grid.getNumberOfRows ()-1==this.ActRow); + + } + + + public Cell next ( ) { + + if ( hasNextCol ( ) ) { + PrvColmn=ActColmn; + ActColmn++; + return grid.getCell (PrvRow,PrvColmn ); + + + } + if ( hasNextRow ( ) ) { + ActRow++; + + ActColmn=1; + PrvColmn=0; + + + PrvRow=ActRow; + + return grid.getCell ( PrvRow , PrvColmn ); + + } return null; + } + } diff --git a/app/src/main/java/model/ComputerPlayer.java b/app/src/main/java/model/ComputerPlayer.java index 71ba380..44226c0 100644 --- a/app/src/main/java/model/ComputerPlayer.java +++ b/app/src/main/java/model/ComputerPlayer.java @@ -8,6 +8,7 @@ import java.util.List; public class ComputerPlayer implements Player{ private String name; private Cell startCell; + private PlayStrategy strategy; ComputerPlayer(String name, Cell startCell){ this.name=name; this.startCell=startCell; @@ -16,8 +17,7 @@ public class ComputerPlayer implements Player{ ComputerPlayer(String name, Cell startCell,PlayStrategy strategy){ this.name=name; this.startCell=startCell; - strategy.play(startCell); - + this.strategy=strategy; } diff --git a/app/src/main/java/model/FloodGame.java b/app/src/main/java/model/FloodGame.java index c9eb4bb..5190aed 100644 --- a/app/src/main/java/model/FloodGame.java +++ b/app/src/main/java/model/FloodGame.java @@ -56,13 +56,13 @@ public class FloodGame { } public boolean hasWon(Player player) { - if (Flooder.coloredArea(player.getStartCell()) == totalFloodingArea-1) { + if (Flooder.coloredArea(player.getStartCell()) == totalFloodingArea) { return true; } return false; } public boolean hasEnded(){ - return (hasWon(player)||getPlayerScore(player)==1); + return (hasWon(player)||getPlayerScore(player)==0); } } -- GitLab