package game; import game.GameSettings.GameType; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import util.ChessfigureConstants; import components.Field; public class TestingChess { public static void main(String[] args) { /* * Startet das Spiel nach den aktuellen Einstellungen. * Die Einstellungen werden aus der Klasse GameSettings * übernommen. */ startGame(); } /** * Startet ein Spiel je nach Einstellungen der GameSettings-Klasse */ public static void startGame() { if (( GameSettings.currentGameType == GameType.Simulated || GameSettings.currentGameType == GameType.PlayerVsSimulatedComputer || GameSettings.currentGameType == GameType.SimulatedWithRobot) && GameSettings.simulatedGameMoves.length() > 0) { // Simulierte Zuege erstellen Chess game = new Chess(getMoves()); game.startGame(); } else if (GameSettings.currentGameType == GameType.PlayerVsComputer || GameSettings.currentGameType == GameType.ComputerVsComputer || GameSettings.currentGameType == GameType.PlayerWithoutCameraVsComputer) { //Chess game = new Chess(); //game.startGame(); // Spiel ab vorgegebener Spielsituation HashMap<Integer, Byte> givenSituation = new HashMap<Integer, Byte>(); /* // Situation, bei der der Gegner in einem Zug Schachmatt ist (Weisser Springer von g4 nach h6) givenSituation.put(Field.getFieldNumber("f1"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.ROOK, true)); givenSituation.put(Field.getFieldNumber("g1"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.KING, true)); givenSituation.put(Field.getFieldNumber("a2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("b2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.BISHOP, true)); givenSituation.put(Field.getFieldNumber("c2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("f2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("h2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("b3"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("g3"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("g4"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.KNIGHT, true)); givenSituation.put(Field.getFieldNumber("d8"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.ROOK, true)); givenSituation.put(Field.getFieldNumber("f8"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.ROOK, true)); givenSituation.put(Field.getFieldNumber("g8"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.KING, true)); givenSituation.put(Field.getFieldNumber("a7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("b7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.BISHOP, true)); givenSituation.put(Field.getFieldNumber("c7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("f7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("h7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("b6"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("g6"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); */ /* * Spielsituation, bei der der Gegner nach einem Zug Schachmatt ist. * givenSituation.put(Field.getFieldNumber("b7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.QUEEN, true)); givenSituation.put(Field.getFieldNumber("g6"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.KING, true)); givenSituation.put(Field.getFieldNumber("h8"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.KING, true)); */ // Spielsituation, Pawn Promotion mit moeglichem Schach anschließend. givenSituation.put(Field.getFieldNumber("a1"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.ROOK, false)); givenSituation.put(Field.getFieldNumber("g1"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.KING, true)); givenSituation.put(Field.getFieldNumber("f2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, false)); givenSituation.put(Field.getFieldNumber("g2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, false)); givenSituation.put(Field.getFieldNumber("h2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, false)); givenSituation.put(Field.getFieldNumber("d3"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("e4"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.KNIGHT, true)); givenSituation.put(Field.getFieldNumber("b7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.QUEEN, true)); givenSituation.put(Field.getFieldNumber("d7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.WHITE, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("c2"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.KING, true)); givenSituation.put(Field.getFieldNumber("e6"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("f7"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, false)); givenSituation.put(Field.getFieldNumber("g5"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("h5"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.PAWN, true)); givenSituation.put(Field.getFieldNumber("h6"), ChessfigureConstants.makeFigureByte(ChessfigureConstants.BLACK, ChessfigureConstants.ROOK, true)); /* Field field = Field.getInstance(); field.removeFigureAt(2); field.removeFigureAt(3); field.removeFigureAt(4); field.removeFigureAt(6); field.removeFigureAt(7); givenSituation = field.getCurrentFieldAsHashMapWithBytes();*/ Chess game = new Chess(givenSituation); game.startGame(); } } /** * Erstellt simulierte Züge * @return */ public static List<Move> getMoves() { List<Move> moves = new ArrayList<Move>(); GameParser g = new GameParser(GameSettings.simulatedGameMoves); g.read(); LinkedList<String> readMoves = g.getMoves(); byte colorOfPlayer = ChessfigureConstants.WHITE; int i = 0; while(!readMoves.isEmpty()) { // Farbe des Spielers bestimmen colorOfPlayer = (i % 2 == 0) ? ChessfigureConstants.WHITE : ChessfigureConstants.BLACK; System.out.println("zug:"+readMoves.get(0)+" "+readMoves.get(1)); moves.add(new Move(colorOfPlayer, Field.getFieldNumber(readMoves.get(0)), Field.getFieldNumber(readMoves.get(1)))); readMoves.removeFirst(); readMoves.removeFirst(); } return moves; } }