From 2874365068b3e7c96e2d310783a676031c7637ce Mon Sep 17 00:00:00 2001 From: Anthony Viola <anthony.viola34@gmail.com> Date: Sun, 26 Nov 2023 02:15:34 +0100 Subject: [PATCH] Firefighter build fini + StonePaperScissors build fini --- src/main/java/app/SimulatorApplication.java | 37 ++-- src/main/java/controller/Controller.java | 13 +- src/main/java/model/Board.java | 8 +- src/main/java/model/Box.java | 3 +- src/main/java/model/Cloud.java | 2 +- src/main/java/model/Extinguisher.java | 9 +- src/main/java/model/Fire.java | 8 +- src/main/java/model/Firefighter.java | 2 +- src/main/java/model/FirefighterBoard.java | 20 +++ src/main/java/model/Item.java | 5 +- src/main/java/model/MotorFirefighter.java | 2 +- src/main/java/model/Mountain.java | 4 +- src/main/java/model/Paper.java | 26 +++ src/main/java/model/Road.java | 6 +- src/main/java/model/Rockeries.java | 4 +- src/main/java/model/Scissors.java | 24 +++ src/main/java/model/ShifumiElement.java | 92 ++++++++++ src/main/java/model/Stone.java | 26 +++ .../java/model/StonePaperScissorsBoard.java | 165 ++++++++++++++++++ src/main/java/view/FirefighterGrid.java | 4 + src/main/java/view/Grid.java | 11 +- .../java/view/StonePaperScissorsGrid.java | 109 ++++++++++++ src/main/resources/pictures/Paper.png | Bin 0 -> 20917 bytes src/main/resources/pictures/Scissors.png | Bin 0 -> 17655 bytes src/main/resources/pictures/Stone.png | Bin 0 -> 16929 bytes .../view/{view.fxml => Firefighterview.fxml} | 0 .../view/StonePaperScissorsView.fxml | 40 +++++ 27 files changed, 582 insertions(+), 38 deletions(-) create mode 100644 src/main/java/model/Paper.java create mode 100644 src/main/java/model/Scissors.java create mode 100644 src/main/java/model/ShifumiElement.java create mode 100644 src/main/java/model/Stone.java create mode 100644 src/main/java/model/StonePaperScissorsBoard.java create mode 100644 src/main/java/view/StonePaperScissorsGrid.java create mode 100644 src/main/resources/pictures/Paper.png create mode 100644 src/main/resources/pictures/Scissors.png create mode 100644 src/main/resources/pictures/Stone.png rename src/main/resources/view/{view.fxml => Firefighterview.fxml} (100%) create mode 100644 src/main/resources/view/StonePaperScissorsView.fxml diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index ac7e53c..25eeaaf 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -11,25 +11,28 @@ import java.io.IOException; import java.net.URL; public class SimulatorApplication extends javafx.application.Application { - private static final String VIEW_RESOURCE_PATH = "/view/view.fxml"; - private static final String APP_NAME = "Firefighter simulator"; + private static final String FIREFIGHTER_VIEW_RESOURCE_PATH = "/view/Firefighterview.fxml"; + private static final String STONEPAPERSCISSORS_VIEW_RESOURCE_PATH = "/view/StonePaperScissorsview.fxml"; private static final int ROW_COUNT = 20; private static final int COLUMN_COUNT = 20; private static final int SQUARE_WIDTH = 50; private static final int SQUARE_HEIGHT = 50; public static final int INITIAL_FIRE_COUNT = 2; - public static final int INITIAL_FIREFIGHTER_COUNT = 3; - public static final int INITIAL_MOTORFIREFIGHTER_COUNT = 1; - public static final int INITIAL_CLOUD_COUNT = 2; + public static final int INITIAL_FIREFIGHTER_COUNT = 5; + public static final int INITIAL_MOTORFIREFIGHTER_COUNT = 2; + public static final int INITIAL_CLOUD_COUNT = 3; public static final int INITIAL_MOUNTAIN_COUNT = 10; public static final int INITIAL_ROAD_COUNT = 10; public static final int INITIAL_ROCKERIES_COUNT = 10; + public static final int INITIAL_STONE_COUNT = 5; + public static final int INITIAL_PAPER_COUNT = 5; + public static final int INITIAL_SCISSORS_COUNT = 5; private Stage primaryStage; private Parent view; - private void initializePrimaryStage(Stage primaryStage) { + private void initializePrimaryStage(Stage primaryStage, String appName) { this.primaryStage = primaryStage; - this.primaryStage.setTitle(APP_NAME); + this.primaryStage.setTitle(appName); this.primaryStage.setOnCloseRequest(event -> Platform.exit()); this.primaryStage.setResizable(false); this.primaryStage.sizeToScene(); @@ -37,14 +40,15 @@ public class SimulatorApplication extends javafx.application.Application { @Override public void start(Stage primaryStage) throws IOException { - initializePrimaryStage(primaryStage); - initializeView(); + initializeFirefighterView(primaryStage); + //initializeStonePaperScissorsView(primaryStage); showScene(); } - private void initializeView() throws IOException { + private void initializeFirefighterView(Stage primaryStage) throws IOException { + initializePrimaryStage(primaryStage, "Firefighter simulator"); FXMLLoader loader = new FXMLLoader(); - URL location = SimulatorApplication.class.getResource(VIEW_RESOURCE_PATH); + URL location = SimulatorApplication.class.getResource(FIREFIGHTER_VIEW_RESOURCE_PATH); loader.setLocation(location); view = loader.load(); Controller controller = loader.getController(); @@ -53,6 +57,17 @@ public class SimulatorApplication extends javafx.application.Application { INITIAL_MOUNTAIN_COUNT, INITIAL_ROAD_COUNT, INITIAL_ROCKERIES_COUNT); } + private void initializeStonePaperScissorsView(Stage primaryStage) throws IOException { + initializePrimaryStage(primaryStage, "Stone,Paper,Scissors simulator"); + FXMLLoader loader = new FXMLLoader(); + URL location = SimulatorApplication.class.getResource(STONEPAPERSCISSORS_VIEW_RESOURCE_PATH); + loader.setLocation(location); + view = loader.load(); + Controller controller = loader.getController(); + controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT, + INITIAL_STONE_COUNT, INITIAL_PAPER_COUNT, INITIAL_SCISSORS_COUNT); + } + private void showScene() { Scene scene = new Scene(view); primaryStage.setScene(scene); diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 57c0965..9712cf1 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -14,6 +14,7 @@ import javafx.util.Duration; import model.Board; import model.Item; import model.FirefighterBoard; +import model.StonePaperScissorsBoard; import util.Position; import view.Grid; @@ -52,8 +53,8 @@ public class Controller { pauseToggleButton.setSelected(true); } - private void setBoard(FirefighterBoard firefighterBoard) { - this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); + private void setBoard(Board board) { + this.board = requireNonNull(board, "board is null"); } private void updateBoard(){ @@ -119,6 +120,14 @@ public class Controller { repaintGrid(); } + public void initialize(int squareWidth, int squareHeight, int columnCount, + int rowCount, int initialStoneCount, int initialPaperCount, int initialScissorsCount) { + + this.setBoard(new StonePaperScissorsBoard(columnCount, rowCount, initialStoneCount, initialPaperCount, initialScissorsCount)); + grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); + repaintGrid(); + } + public void oneStepButtonAction() { this.pause(); updateBoard(); diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java index 4edcc16..3603dcd 100644 --- a/src/main/java/model/Board.java +++ b/src/main/java/model/Board.java @@ -7,7 +7,7 @@ import java.util.List; /** * This interface represents a generic board for modeling various state-based systems. * - * @param <S> The type of state represented on the board. + * */ public interface Board { @@ -59,5 +59,11 @@ public interface Board { Item getItemByPosition(Position position); Box getBoxByPosition(Position position); void testScreen(); + + List<Position> neighbors(Position position); + + List<Position> emptyNeighbors(Position position); + + Position opposite(Position opposite, Position center); } diff --git a/src/main/java/model/Box.java b/src/main/java/model/Box.java index bbd1a23..ea40ae1 100644 --- a/src/main/java/model/Box.java +++ b/src/main/java/model/Box.java @@ -2,10 +2,11 @@ package model; import util.Position; import view.FirefighterGrid; +import view.Grid; public interface Box { Position position(); - void paint(FirefighterGrid grid); + void paint(Grid grid); } diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index 40adb4a..60f6e22 100644 --- a/src/main/java/model/Cloud.java +++ b/src/main/java/model/Cloud.java @@ -14,7 +14,7 @@ public class Cloud extends Extinguisher implements Item { } - List<Position> move(FirefighterBoard board) { + List<Position> move(Board board) { List<Position> result = new ArrayList<>(); List<Position> finalNeighborsList = new ArrayList<>(); List<Position> neighborsList = board.neighbors(position); diff --git a/src/main/java/model/Extinguisher.java b/src/main/java/model/Extinguisher.java index af8c779..d748e40 100644 --- a/src/main/java/model/Extinguisher.java +++ b/src/main/java/model/Extinguisher.java @@ -3,6 +3,7 @@ package model; import javafx.scene.paint.Color; import util.Position; import view.FirefighterGrid; +import view.Grid; import java.util.ArrayList; import java.util.List; @@ -21,14 +22,14 @@ public abstract class Extinguisher { } - public List<Position> update(FirefighterBoard board){ + public List<Position> update(Board board){ ArrayList<Position> result = new ArrayList<Position>(); result.addAll(move(board)); result.addAll(extinguish(board)); return result; } - private List<Position> extinguish(FirefighterBoard board) { + private List<Position> extinguish(Board board) { List<Position> result = new ArrayList<>(); List<Item> itemList = board.itemList(); List<Position> neighborsList = board.neighbors(position); @@ -44,9 +45,9 @@ public abstract class Extinguisher { return result; } - abstract List<Position> move(FirefighterBoard board); + abstract List<Position> move(Board board); - public void paint(FirefighterGrid grid){ + public void paint(Grid grid){ grid.paintCircle(position.row(), position.column(), color); } diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 2a63ed1..be758d2 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -1,10 +1,8 @@ package model; -import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import util.Position; -import view.FirefighterGrid; - +import view.Grid; import java.util.ArrayList; import java.util.List; @@ -18,7 +16,7 @@ public class Fire implements Item{ this.position = position; } - public List<Position> update(FirefighterBoard board) { + public List<Position> update(Board board) { ArrayList<Position> result = new ArrayList<Position>(); List<Position> neighborslist = board.neighbors(position); Box box = board.getBoxByPosition(position);; @@ -51,7 +49,7 @@ public class Fire implements Item{ return position; } - public void paint(FirefighterGrid grid){ + public void paint(Grid grid){ grid.paintTriangle(position.row(), position.column(), color); } diff --git a/src/main/java/model/Firefighter.java b/src/main/java/model/Firefighter.java index 5659d20..96dc7db 100644 --- a/src/main/java/model/Firefighter.java +++ b/src/main/java/model/Firefighter.java @@ -12,7 +12,7 @@ public class Firefighter extends Extinguisher implements Item{ this.color = Color.BLUE; } - public List<Position> move(FirefighterBoard board) { + public List<Position> move(Board board) { List<Position> result = new ArrayList<>(); Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index bc5745b..ab836ad 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -144,6 +144,26 @@ public class FirefighterBoard implements Board { return list; } + @Override + public List<Position> emptyNeighbors(Position position) { + return null; + } + + public Position opposite(Position opposite, Position center) { + if (opposite.column() == center.column() || opposite.row() == center.row()){ + if (opposite.column() == (center.column()+1)) { + return new Position(center.row(), center.column()-1); + } else if (opposite.column() == (center.column()-1)) { + return new Position(center.row(), center.column()-1); + } else if (opposite.row() == (center.row()+1)) { + return new Position(center.row()-1, center.column()); + } else if (opposite.row() == (center.row()-1)) { + return new Position(center.row()+1, center.column()); + } + } + return null; + } + public void testScreen(){ Position position; diff --git a/src/main/java/model/Item.java b/src/main/java/model/Item.java index f4c82a3..e79b7b3 100644 --- a/src/main/java/model/Item.java +++ b/src/main/java/model/Item.java @@ -2,17 +2,18 @@ package model; import util.Position; import view.FirefighterGrid; +import view.Grid; import java.util.ArrayList; import java.util.List; public interface Item { - List<Position> update(FirefighterBoard board); + List<Position> update(Board board); Position position(); - void paint(FirefighterGrid grid); + void paint(Grid grid); String toString(); } diff --git a/src/main/java/model/MotorFirefighter.java b/src/main/java/model/MotorFirefighter.java index 7e59abd..9100a55 100644 --- a/src/main/java/model/MotorFirefighter.java +++ b/src/main/java/model/MotorFirefighter.java @@ -12,7 +12,7 @@ public class MotorFirefighter extends Extinguisher implements Item{ this.color = Color.PURPLE; } - public List<Position> move(FirefighterBoard board) { + public List<Position> move(Board board) { List<Position> result = new ArrayList<>(); Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java index 837ac03..0a28d0f 100644 --- a/src/main/java/model/Mountain.java +++ b/src/main/java/model/Mountain.java @@ -2,7 +2,7 @@ package model; import javafx.scene.paint.Color; import util.Position; -import view.FirefighterGrid; +import view.Grid; public class Mountain implements Box{ private final Position position; @@ -18,7 +18,7 @@ public class Mountain implements Box{ return position; } - public void paint(FirefighterGrid grid){ + public void paint(Grid grid){ grid.paintSquare(position.row(), position.column(), color); } public String toString(){ diff --git a/src/main/java/model/Paper.java b/src/main/java/model/Paper.java new file mode 100644 index 0000000..06aa9bf --- /dev/null +++ b/src/main/java/model/Paper.java @@ -0,0 +1,26 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; + +public class Paper extends ShifumiElement implements Item{ + public Paper(Position position) { + super(position); + iconName = "Paper"; + } + + public List<Position> reaction(Board board, Item item, Position potentialMove){ + if (item instanceof Stone){ + return tryKillAndMove(board, potentialMove); + } else if (item instanceof Scissors) { + return escape(board, potentialMove); + } + return new ArrayList<>(); + } + + public String toString(){ + return "Paper position : [" + position.row() + ", " + position.column()+ "]"; + } +} diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java index defe96f..3c658df 100644 --- a/src/main/java/model/Road.java +++ b/src/main/java/model/Road.java @@ -2,10 +2,10 @@ package model; import javafx.scene.paint.Color; import util.Position; -import view.FirefighterGrid; +import view.Grid; public class Road implements Box{ - private Position position; + private final Position position; private final Color color = Color.BLACK; public Road(Position position){ @@ -15,7 +15,7 @@ public class Road implements Box{ return position; } - public void paint(FirefighterGrid grid){ + public void paint(Grid grid){ grid.paintSquare(position.row(), position.column(), color); } diff --git a/src/main/java/model/Rockeries.java b/src/main/java/model/Rockeries.java index 2bf156a..d0f5952 100644 --- a/src/main/java/model/Rockeries.java +++ b/src/main/java/model/Rockeries.java @@ -2,7 +2,7 @@ package model; import javafx.scene.paint.Color; import util.Position; -import view.FirefighterGrid; +import view.Grid; public class Rockeries implements Box{ private final Position position; @@ -17,7 +17,7 @@ public class Rockeries implements Box{ return position; } - public void paint(FirefighterGrid grid){ + public void paint(Grid grid){ grid.paintSquare(position.row(), position.column(), color); } diff --git a/src/main/java/model/Scissors.java b/src/main/java/model/Scissors.java new file mode 100644 index 0000000..69f0a11 --- /dev/null +++ b/src/main/java/model/Scissors.java @@ -0,0 +1,24 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; + +public class Scissors extends ShifumiElement implements Item{ + public Scissors(Position position) { + super(position); + iconName = "Scissors"; + } + + public List<Position> reaction(Board board, Item item, Position potentialMove){ + if (item instanceof Paper){ + return tryKillAndMove(board, potentialMove); + } else if (item instanceof Stone) { + return escape(board, potentialMove); + } + return new ArrayList<>(); + } + + public String toString() { return "Scissors position : [" + position.row() + ", " + position.column()+ "]"; } +} diff --git a/src/main/java/model/ShifumiElement.java b/src/main/java/model/ShifumiElement.java new file mode 100644 index 0000000..cdc83a2 --- /dev/null +++ b/src/main/java/model/ShifumiElement.java @@ -0,0 +1,92 @@ +package model; + +import javafx.geometry.Pos; +import util.Position; +import view.Grid; + +import java.util.*; + +public abstract class ShifumiElement { + protected Position position; + protected String iconName; + + public ShifumiElement(Position position){ + this.position = position; + } + + public Position position() { + return position; + } + + public List<Position> update(Board board){ + List<Position> result = new ArrayList<>(); + Set<Position> seen = new HashSet<>(); + HashMap<Position, Position> firstMove = new HashMap<>(); + Queue<Position> toVisit = new LinkedList<>(); + for (Position initialMove : board.neighbors(position)) { + result = reaction(board, board.getItemByPosition(initialMove), initialMove); + if (!result.isEmpty()){ + return result; + } + if (board.getItemByPosition(initialMove) == null) { + firstMove.put(initialMove, initialMove); + toVisit.add(initialMove); + } + } + while (!toVisit.isEmpty()) { + Position current = toVisit.poll(); + result = reaction(board, board.getItemByPosition(current), firstMove.get(current)); + if (!result.isEmpty()) { + break; + } + for (Position adjacent : board.neighbors(current)) { + if (seen.contains(adjacent)) continue; + toVisit.add(adjacent); + seen.add(adjacent); + firstMove.put(adjacent, firstMove.get(current)); + } + } + return result; + } + + + public void paint(Grid grid){ + grid.paintPicture(position.row(), position.column(), "/pictures/"+iconName+".png"); + } + + public abstract String toString(); + + public abstract List<Position> reaction(Board board, Item item, Position potentialMove); + + public List<Position> escape(Board board, Position escapePosition) { + List<Position> result = new ArrayList<>(); + List<Position> neighbors = board.emptyNeighbors(position); + neighbors.remove(escapePosition); + for (Position neighbor: neighbors) { + if (neighbor == board.opposite(escapePosition, position)){ + result.add(position); + position = neighbor; + result.add(position); + return result; + } + } + if (!neighbors.isEmpty()) { + result.add(position); + position = neighbors.get(new Random().nextInt(neighbors.size())); + result.add(position); + return result; + } + return result; + } + + public List<Position> tryKillAndMove(Board board, Position newPosition){ + List<Position> result = new ArrayList<>(); + board.itemList().remove(board.getItemByPosition(newPosition)); + result.add(this.position); + position = newPosition; + result.add(this.position); + return result; + } +} + + diff --git a/src/main/java/model/Stone.java b/src/main/java/model/Stone.java new file mode 100644 index 0000000..fbfe085 --- /dev/null +++ b/src/main/java/model/Stone.java @@ -0,0 +1,26 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; + +public class Stone extends ShifumiElement implements Item{ + public Stone(Position position) { + super(position); + iconName = "Stone"; + } + + public List<Position> reaction(Board board, Item item, Position potentialMove){ + if (item instanceof Scissors){ + return tryKillAndMove(board, potentialMove); + } else if (item instanceof Paper) { + return escape(board, potentialMove); + } + return new ArrayList<>(); + } + + public String toString(){ + return "Stone position : [" + position.row() + ", " + position.column()+ "]"; + } +} diff --git a/src/main/java/model/StonePaperScissorsBoard.java b/src/main/java/model/StonePaperScissorsBoard.java new file mode 100644 index 0000000..18fb1c1 --- /dev/null +++ b/src/main/java/model/StonePaperScissorsBoard.java @@ -0,0 +1,165 @@ +package model; + +import util.Position; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class StonePaperScissorsBoard implements Board { + private final int columnCount; + private final int rowCount; + private final int initialPaperCount; + private final int initialScissorsCount; + private final int initialStoneCount; + private List<Item> itemList; + private int step = 0; + private final Random randomGenerator = new Random(); + + public StonePaperScissorsBoard(int columnCount, int rowCount, int initialPaperCount, int initialScissorsCount, int initialStoneCount) { + this.columnCount = columnCount; + this.rowCount = rowCount; + this.itemList = new ArrayList<>(); + this.initialPaperCount = initialPaperCount; + this.initialScissorsCount = initialScissorsCount; + this.initialStoneCount = initialStoneCount; + initializeItems(); + } + + public void initializeItems() { + for (int i = 0; i < initialPaperCount; i++){ + itemList.add(new Paper(randomEmptyPosition())); + } + for (int i = 0; i < initialScissorsCount; i++){ + itemList.add(new Scissors(randomEmptyPosition())); + } + for (int i = 0; i < initialStoneCount; i++){ + itemList.add(new Stone(randomEmptyPosition())); + } + } + + private Position randomEmptyPosition() { + Position result; + for(;;){ + result = randomPosition(); + if (getItemByPosition(result) == null) return result; + } + } + + private Position randomPosition() { + return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount)); + } + + @Override + public int rowCount() { + return rowCount; + } + + @Override + public int columnCount() { + return columnCount; + } + + public List<Position> updateToNextGeneration() { + List<Position> result = new ArrayList<Position>(); + List<Item> actualList = new ArrayList<Item>(itemList); + for (Item item : actualList) { + if (item instanceof Stone) result.addAll(item.update(this)); + } + actualList = new ArrayList<Item>(itemList); + for (Item item : actualList) { + if (item instanceof Paper) result.addAll(item.update(this)); + } + actualList = new ArrayList<Item>(itemList); + for (Item item : actualList) { + if (item instanceof Scissors) result.addAll(item.update(this)); + } + step++; + return result; + } + + @Override + public int stepNumber() { return step; } + + public List<Item> itemList() { return itemList; } + + public Item getItemByPosition(Position position) { + for (Item item : itemList) { + if (item.position().equals(position)) { + return item; + } + } + return null; + } + + @Override + public Box getBoxByPosition(Position position) { + return null; + } + + + @Override + public void reset() { + step = 0; + itemList.clear(); + initializeItems(); + } + + public List<Position> neighbors(Position position) { + List<Position> list = new ArrayList<>(); + if (position.row() > 0) list.add(new Position(position.row() - 1, position.column())); + if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1)); + if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column())); + if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1)); + return list; + } + + public List<Position> emptyNeighbors(Position position) { + List<Position> list = new ArrayList<>(); + if (position.row() > 0 && getItemByPosition(new Position(position.row() - 1, position.column())) == null) list.add(new Position(position.row() - 1, position.column())); + if (position.column() > 0 && getItemByPosition(new Position(position.row(), position.column() - 1)) == null) list.add(new Position(position.row(), position.column() - 1)); + if (position.row() < rowCount - 1 && getItemByPosition(new Position(position.row()+ 1, position.column())) == null) list.add(new Position(position.row() + 1, position.column())); + if (position.column() < columnCount - 1 && getItemByPosition(new Position(position.row()+ 1, position.column())) == null) list.add(new Position(position.row(), position.column() + 1)); + return list; + } + + @Override + public Position opposite(Position opposite, Position center) { + if (opposite != center && (opposite.column() == center.column() || opposite.row() == center.row())){ + if (opposite.column() == (center.column()+1)) { + return new Position(center.row(), center.column()-1); + } else if (opposite.column() == (center.column()-1)) { + return new Position(center.row(), center.column()-1); + } else if (opposite.row() == (center.row()+1)) { + return new Position(center.row()-1, center.column()); + } else if (opposite.row() == (center.row()-1)) { + return new Position(center.row()+1, center.column()); + } + } + return null; + } + + public void testScreen(){ + Position position; + + System.out.println(itemList.toString()); + + for (int row = 0; row < rowCount; row++){ + for (int column = 0; column < columnCount; column++){ + + position = new Position(row,column); + if (getItemByPosition(position) == null){ + System.out.print("□ "); + } else if (getItemByPosition(position) instanceof Stone) { + System.out.print("St "); + } else if (getItemByPosition(position) instanceof Paper) { + System.out.print("Pa "); + } else if (getItemByPosition(position) instanceof Scissors) { + System.out.print("sc "); + } + } + System.out.println(); + } + System.out.println(); + } +} diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index aeaa2bf..12f6c4e 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -102,6 +102,10 @@ public class FirefighterGrid extends Canvas implements Grid{ getGraphicsContext2D().fillRect(column*squareWidth,row*squareHeight, squareWidth, squareHeight); } + @Override + public void paintPicture(int row, int column, String iconDirectory) { + } + public void paintTriangle(int row, int column, Color color){ getGraphicsContext2D().setFill(color); getGraphicsContext2D().fillPolygon(new double[]{column*squareWidth , column*squareWidth + squareWidth/2, (column+1)*squareWidth}, diff --git a/src/main/java/view/Grid.java b/src/main/java/view/Grid.java index 599a312..db71753 100644 --- a/src/main/java/view/Grid.java +++ b/src/main/java/view/Grid.java @@ -1,5 +1,6 @@ package view; +import javafx.scene.paint.Color; import javafx.util.Pair; import model.Item; import util.Position; @@ -11,8 +12,6 @@ import java.util.List; /** * This interface represents a generic grid structure for displaying two-dimensional data. - * - * @param <E> The type of elements stored in the grid. */ public interface Grid { @@ -44,5 +43,13 @@ public interface Grid { int rowCount(); void initialize(Board board); + + void paintCircle(int row, int column, Color color); + + void paintSquare(int row, int column, Color color); + + void paintPicture(int row, int column, String iconDirectory); + + void paintTriangle(int row, int column, Color color); } diff --git a/src/main/java/view/StonePaperScissorsGrid.java b/src/main/java/view/StonePaperScissorsGrid.java new file mode 100644 index 0000000..bad702b --- /dev/null +++ b/src/main/java/view/StonePaperScissorsGrid.java @@ -0,0 +1,109 @@ +package view; + +import javafx.scene.canvas.Canvas; +import javafx.scene.image.Image; +import javafx.scene.paint.Color; +import model.Board; +import model.Box; +import model.Item; +import util.Position; + +import java.io.InputStream; +import java.util.List; + +public class StonePaperScissorsGrid extends Canvas implements Grid { + private int squareWidth; + private int squareHeight; + private int columnCount; + private int rowCount; + + public void repaint(List<Item> itemList, List<Position> clearList, Board board) { + clear(clearList); + paintItems(itemList); + paintLines(); + } + + private void clear(List<Position> positions) { + for (Position position : positions) { + paintSquare(position.row(), position.column(), Color.WHITE); + } + } + + private void paintItems(List<Item> itemList) { + for (Item item : itemList) { + item.paint(this); + } + } + + public void initialize(Board board) { + for (int row = 0; row < rowCount; row++){ + for (int column = 0; column < columnCount; column++){ + paintSquare(row, column, Color.WHITE); + } + } + paintLines(); + paintItems(board.itemList()); + } + + public int columnCount() { + return columnCount; + } + + public int rowCount() { + return rowCount; + } + + @Override + public void setDimensions(int columnCount, int rowCount, int squareWidth, int squareHeight) { + this.squareWidth = squareWidth; + this.squareHeight = squareHeight; + this.columnCount = columnCount; + this.rowCount = rowCount; + super.setWidth(squareWidth*columnCount); + super.setHeight(squareHeight*rowCount); + + } + + private void paintLines(){ + paintHorizontalLines(); + paintVerticalLines(); + } + + private void paintVerticalLines() { + for(int column = 0; column < columnCount; column++) + getGraphicsContext2D().strokeLine(column*squareWidth, 0,column*squareWidth, getHeight()); + } + + private void paintHorizontalLines() { + for(int row = 0; row < rowCount; row++) + getGraphicsContext2D().strokeLine(0, row*squareHeight, getWidth(), row*squareHeight); + } + + public void paintSquare(int row, int column, Color color){ + getGraphicsContext2D().setFill(color); + getGraphicsContext2D().fillRect(column*squareWidth,row*squareHeight, squareWidth, squareHeight); + } + + @Override + public void paintPicture(int row, int column, String iconDirectory) { + InputStream input = this.getClass().getResourceAsStream(iconDirectory); + assert input != null; + getGraphicsContext2D().drawImage(new Image(input, squareWidth, squareHeight,false, true),column*squareWidth , row*squareHeight); + } + + public void paintTriangle(int row, int column, Color color){ + getGraphicsContext2D().setFill(color); + getGraphicsContext2D().fillPolygon(new double[]{column*squareWidth , column*squareWidth + squareWidth/2, (column+1)*squareWidth}, + new double[]{(row+1)*squareHeight , row*squareHeight, (row+1)*squareHeight}, + 3); + } + + public void paintCircle(int row, int column, Color color){ + getGraphicsContext2D().setFill(color); + getGraphicsContext2D().fillOval(column*squareWidth, row*squareHeight, squareHeight, squareWidth); + } + + private void clearSquare(int row, int column){ + getGraphicsContext2D().clearRect(column*squareWidth,row*squareHeight, squareWidth, squareHeight); + } +} diff --git a/src/main/resources/pictures/Paper.png b/src/main/resources/pictures/Paper.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d0c20c35dd5134d6e7c4ed2714eb0ace84be81 GIT binary patch literal 20917 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 Hl+XkKu3PDd literal 0 HcmV?d00001 diff --git a/src/main/resources/pictures/Scissors.png b/src/main/resources/pictures/Scissors.png new file mode 100644 index 0000000000000000000000000000000000000000..5a50d1ae4c24691c4a8bc1f01971d8e4d2c8cb56 GIT binary patch literal 17655 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/pictures/Stone.png b/src/main/resources/pictures/Stone.png new file mode 100644 index 0000000000000000000000000000000000000000..c95af38a86265c54e7bc451116704e5739f273f6 GIT binary patch literal 16929 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 F0syDIiyZ&} literal 0 HcmV?d00001 diff --git a/src/main/resources/view/view.fxml b/src/main/resources/view/Firefighterview.fxml similarity index 100% rename from src/main/resources/view/view.fxml rename to src/main/resources/view/Firefighterview.fxml diff --git a/src/main/resources/view/StonePaperScissorsView.fxml b/src/main/resources/view/StonePaperScissorsView.fxml new file mode 100644 index 0000000..a93e463 --- /dev/null +++ b/src/main/resources/view/StonePaperScissorsView.fxml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> +<?import view.StonePaperScissorsGrid?> + +<?import javafx.scene.control.ToggleButton?> +<?import javafx.scene.control.Separator?> +<?import javafx.scene.control.Label?> +<HBox styleClass="background" stylesheets="@DarkTheme.css" + xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.Controller"> + <VBox> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0" + text="Generation number"/> + <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0" + text="Restart"/> + <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0" + text="One step"/> + <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Play"/> + <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Pause"/> + </VBox> + <StonePaperScissorsGrid fx:id="grid" + xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml"> + </StonePaperScissorsGrid> +</HBox> \ No newline at end of file -- GitLab