From 224a09c711fd195fce4279cfdd355dd42c0742f2 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 13 Apr 2025 12:30:12 +0200 Subject: [PATCH] add simulators for testing --- .../java/chess/simulator/FoolCheckMate.java | 30 ++++++++++++++ .../java/chess/simulator/PromoteTest.java | 39 +++++++++++++++++++ .../main/java/chess/simulator/Simulator.java | 27 +++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 app/src/main/java/chess/simulator/FoolCheckMate.java create mode 100644 app/src/main/java/chess/simulator/PromoteTest.java create mode 100644 app/src/main/java/chess/simulator/Simulator.java diff --git a/app/src/main/java/chess/simulator/FoolCheckMate.java b/app/src/main/java/chess/simulator/FoolCheckMate.java new file mode 100644 index 0000000..630d8e7 --- /dev/null +++ b/app/src/main/java/chess/simulator/FoolCheckMate.java @@ -0,0 +1,30 @@ +package chess.simulator; + +import java.util.Arrays; +import java.util.List; + +import chess.controller.CommandExecutor; +import chess.model.Coordinate; +import chess.model.Move; + +public class FoolCheckMate extends Simulator { + + public FoolCheckMate(CommandExecutor commandExecutor) { + super(commandExecutor); + } + + @Override + public List getMoves() { + List moves = Arrays.asList( + // white pawn + new Move(new Coordinate(5, 6), new Coordinate(5, 5)), + // black pawn + new Move(new Coordinate(4, 1), new Coordinate(4, 3)), + // 2nd white pawn + new Move(new Coordinate(6, 6), new Coordinate(6, 4)), + // black queen + new Move(new Coordinate(3, 0), new Coordinate(7, 4))); + + return moves; + } +} diff --git a/app/src/main/java/chess/simulator/PromoteTest.java b/app/src/main/java/chess/simulator/PromoteTest.java new file mode 100644 index 0000000..c3cabee --- /dev/null +++ b/app/src/main/java/chess/simulator/PromoteTest.java @@ -0,0 +1,39 @@ +package chess.simulator; + +import java.util.Arrays; +import java.util.List; + +import chess.controller.CommandExecutor; +import chess.model.Coordinate; +import chess.model.Move; + +public class PromoteTest extends Simulator{ + + public PromoteTest(CommandExecutor commandExecutor) { + super(commandExecutor); + } + + @Override + protected List getMoves() { + List moves = Arrays.asList( + // white pawn + new Move(new Coordinate(5, 6), new Coordinate(5, 4)), + // black pawn + new Move(new Coordinate(4, 1), new Coordinate(4, 3)), + // white pawn capture + new Move(new Coordinate(5, 4), new Coordinate(4, 3)), + // black king + new Move(new Coordinate(4, 0), new Coordinate(4, 1)), + // white pawn moves + new Move(new Coordinate(4, 3), new Coordinate(4, 2)), + // black king + new Move(new Coordinate(4, 1), new Coordinate(5, 2)), + // white pawn moves + new Move(new Coordinate(4, 2), new Coordinate(4, 1)), + // black king + new Move(new Coordinate(5, 2), new Coordinate(6, 2)) + ); + return moves; + } + +} diff --git a/app/src/main/java/chess/simulator/Simulator.java b/app/src/main/java/chess/simulator/Simulator.java new file mode 100644 index 0000000..2e8f52d --- /dev/null +++ b/app/src/main/java/chess/simulator/Simulator.java @@ -0,0 +1,27 @@ +package chess.simulator; + +import java.util.List; + +import chess.controller.CommandExecutor; +import chess.controller.commands.MoveCommand; +import chess.controller.event.GameAdaptator; +import chess.model.Move; + +public abstract class Simulator extends GameAdaptator{ + + protected final CommandExecutor commandExecutor; + + public Simulator(CommandExecutor commandExecutor) { + this.commandExecutor = commandExecutor; + } + + @Override + public void onGameStart() { + for (Move move : getMoves()) { + this.commandExecutor.executeCommand(new MoveCommand(move)); + } + } + + protected abstract List getMoves(); + +}