diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java index c3c3e0f8..ef0a9b77 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/ChoosePieceAutomatonState.java @@ -31,31 +31,27 @@ public ChoosePieceAutomatonState(ChoosePieceState choosePieceAutomaton, ServerGa * @return true, if the piece can move */ protected boolean canMove(Piece piece) { + System.out.println("Server: reached canMove() for piece: " + piece); int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); int pieceIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); - System.out.println("ChoosePieceAutomaton: pieceIndex:" + pieceIdx); int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex(); int normPieceIdx = (-startIdx + pieceIdx + 40) % 40; int targetIdx = normPieceIdx + steps; - System.out.println("Server: ChoosePieceStateMachine: canMove: piece.getState()" + piece.getState()); - System.out.println("Server: ChoosePieceStateAutomaton: canMove:" + canPieceMoveInHome(piece, steps)); + //checks if the piece can move in the home if (piece.getState().equals(PieceState.HOME)) { if (canPieceMoveInHome(piece, steps)) { - System.out.println("Server: ChoosePieceStateMachine:canMove: entered canMove/canPieceMoveInHome"); return true; } } else { if (canPieceMoveInHome(piece, steps)) { - System.out.println("Server: ChoosePieceStateMachine:canMove: entered canMove/canPieceMoveInHome"); return true; } //checks if the piece will not go over its home-field else if (40 > targetIdx && (!piece.getState().equals(PieceState.HOME) || !piece.getState().equals(PieceState.HOMEFINISHED))) { Color activeColor = logic.getGame().getActiveColor(); - System.out.println("ChoosePieceAutomaton: targetindex:" + (pieceIdx + steps) % 40); Node tartgetNode = logic.getGame().getBoard().getInfield()[(pieceIdx + steps) % 40]; //checks if the target-node is not occupied by an own color if (!tartgetNode.isOccupied(activeColor)) { @@ -80,17 +76,15 @@ else if (40 > targetIdx && (!piece.getState().equals(PieceState.HOME) || !piece. */ protected boolean canPieceMoveInHome(Piece piece, int steps) { //tests if the piece can move inside the home - System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:" + piece.getState()); steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); + System.out.println("Server: reached canPieceMoveInHome for piece: " + piece +" and the steps: "+steps); + if (piece.getState().equals(PieceState.HOME)) { - System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceState:reached if(piece.getState()==PieceState.HOME)"); int homeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); + System.out.println("Server: reached canPieceMoveInHome for piece: " + piece + " and the steps: "+steps + " and the homeIndex: "+homeIdx + " and the if-clause ((3 - homeIdx) >= steps - 1): "+((3 - homeIdx) >= steps - 1)); //tests if the steps are less than the possible movement - System.out.println("Server: ChoosePieceAutomaton: canPieceMoveInHome: reached second if: (4 - homeIdx) > steps:" + ((4 - homeIdx) > steps) + "steps:" + steps + "homeIdx:" + homeIdx); if ((3 - homeIdx) >= steps - 1) { - //TODO - System.out.println("Server: canPieceMoveInHome: !jumpOver" + !jumpOver(steps-1, homeIdx, false)); - return !jumpOver(steps-1, homeIdx, false); + return !jumpOver(steps, homeIdx, false); } else { return false; @@ -102,17 +96,16 @@ else if (piece.getState() == PieceState.ACTIVE) { int startIdx = logic.getGame().getActivePlayer().getStartNodeIndex(); int normPieceIdx = (-startIdx + pieceIdx + 40) % 40; int targetIdx = normPieceIdx + steps; - System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: pieceIndex:" + pieceIdx + "targetIdx:" + targetIdx); + System.out.println("Server: canPieceHomeMove: else: Active: with pieceIndex: "+pieceIdx+" and the steps: "+steps+ " and startIdx: "+startIdx+" and targetIdx: "+targetIdx +" and the if-statement (targetIdx >= 40): "+(targetIdx >= 40)); if (targetIdx >= 40) { int stepsToHome = 39 - normPieceIdx; - int restMovement = steps - stepsToHome - 1; - if (restMovement >= 3) return false; - System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: stepsToHome:" + stepsToHome + "restMovement:" + restMovement + "jumpOver:" + jumpOver(restMovement, 0, true) + "canPieceMoveInHome: return:" + true); + int restMovement = steps - stepsToHome-1; + System.out.println("Server: canPieceHomeMove:else: restMovement: "+restMovement+ " and the if-clause(restMovement >= 3):"+(restMovement >= 3)); + if (restMovement >= 4) return false; return !jumpOver(restMovement, 0, true); } } else { - System.out.println("Server: ChoosePieceStateMachine: canPieceMoveInHome: return:" + false); return false; } return false; @@ -127,19 +120,20 @@ else if (piece.getState() == PieceState.ACTIVE) { * @return false, if there is no piece to jump over */ private boolean jumpOver(int stepsInHome, int homeIdx, boolean outside) { - //tests if the piece comes from the outside in the home if (outside) { + System.out.println("Server: jumpOver: for the homeIndex: "+ homeIdx+" ,stepsInHome: "+stepsInHome+ " , outside: "+outside + " annd the targetIndex: "+stepsInHome); if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome].isOccupied()) return true; - System.out.println("Server: ChoosePieceState: jumpOver: from outside"); - for (int i = 0; i < stepsInHome; i++) { + for (int i = 0; i <= stepsInHome; i++) { if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true; } } //tests if the piece jumps over a piece from inside the home else { - if (logic.getGame().getActivePlayer().getHomeNodes()[stepsInHome + homeIdx].isOccupied()) return true; - for (int i = 1 + homeIdx; i < homeIdx-1 + stepsInHome; i++) { + int targetIndex = stepsInHome + homeIdx; + System.out.println("Server: jumpOver: for the homeIndex: "+ homeIdx+" ,stepsInHome: "+stepsInHome+ " , outside: "+outside + " and the targetIndex: "+targetIndex); + if (logic.getGame().getActivePlayer().getHomeNodes()[targetIndex].isOccupied()) return true; + for (int i = 1 + homeIdx; i <= targetIndex; i++) { if (logic.getGame().getActivePlayer().getHomeNodes()[i].isOccupied()) return true; } } @@ -164,11 +158,13 @@ protected int getHomeTargetIdx(Piece piece, int steps) { int stepsToHome = 39 - normPieceIdx; //calculates the rest-movement inside a home int restMovement = steps - stepsToHome - 1; + System.out.println("Server: getHomeTargetIndex for the piece: "+ piece + " with the index: "+restMovement); return restMovement; } //the else handles the logic if the piece is in the home and moves inside the house else { int pieceHomeIdx = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); + System.out.println("Server: getHomeTargetIndex for the piece: "+ piece + " with the index: "+(pieceHomeIdx + steps)); return pieceHomeIdx + steps; } } @@ -181,14 +177,15 @@ protected int getHomeTargetIdx(Piece piece, int steps) { */ protected int getInfieldTarget(Piece piece, int steps) { int index = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); + System.out.println("Server: calculated the targetIndex in the Infield for:"+piece+"with the value"+ ((steps + index) % 40)); return (steps + index) % 40; } /** * this method is used for calculating the targetIndex * - * @param piece - * @return + * @param piece the piece give + * @return the index */ protected int calculateTargetIndex(Piece piece) { int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); @@ -196,7 +193,6 @@ protected int calculateTargetIndex(Piece piece) { System.out.println("Server: ChoosePieceStateAutomaton: calculate index in home:" + getHomeTargetIdx(piece, steps)); return getHomeTargetIdx(piece, steps); } - System.out.println("Server: ChoosePieceStateAutomaton: calculate index in Infield:" + getInfieldTarget(piece, steps)); return getInfieldTarget(piece, steps); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java index af88e20c..b9041bf6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/NoPieceState.java @@ -60,10 +60,7 @@ private void checkSelectPiece(Player activePlayer){ moveablePieces.add(piece); } } - System.out.println("Server: NoPieceState: movablePieces.size()"+moveablePieces.size()); - System.out.println("Server: NoPiece: piece.getState"+moveablePieces.get(0).getState()); moveablePieces.removeIf(piece -> !canMove(piece)); - System.out.println("Server: NoPieceState: movablePieces.size(): after deletion:"+moveablePieces.size()); if (moveablePieces.isEmpty()) { this.choosePieceAutomaton.setCurrentState(this.choosePieceAutomaton.getNoTurnState()); } else { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java index 05a28499..786a6e32 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java @@ -41,24 +41,20 @@ public void setMoveablePieces(ArrayList moveablePieces) { */ @Override public void enter(){ - LOGGER.log(System.Logger.Level.DEBUG, "Entered SelectPieceState state in the Server."); int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); for (Piece piece : moveablePieces) { if(canPieceMoveInHome(piece,steps)){ int target= getHomeTargetIdx(piece,steps); - System.out.println("Server: SelectPieceState: enter in canPieceMoveInHome: targetIndex:"+target); targetIndex.add(target); isHomeMove.add(true); } else{ int target = getInfieldTarget(piece,steps); - System.out.println("Server: SelectPieceState: enter in else: targetIndex:"+target); targetIndex.add(target); isHomeMove.add(false); } } - System.out.println("Server: SelectPiece: enter: send: "+moveablePieces.get(0)+isHomeMove.get(0)+targetIndex.get(0)); logic.getServerSender().send(logic.getGame().getActivePlayerId(), new SelectPieceMessage(moveablePieces, isHomeMove, targetIndex)); } @@ -72,9 +68,7 @@ public void received(RequestMoveMessage msg, int from){ int steps = logic.getGame().getDiceModifier() * logic.getGame().getDiceEyes(); Piece piece = moveablePieces.get(indexOfPiece); if(canPieceMoveInHome(piece,steps)){ - System.out.println("Server: SelectPieceState: canPieceMoveInHome(piece,steps)"); if(piece.getState().equals(PieceState.HOME)) { - System.out.println("Server: SelectPieceState: piece.getState()==PieceState.HOME"); //gets the oldNode int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); Node oldNode = logic.getGame().getActivePlayer().getHomeNodes()[homeIndex]; @@ -90,11 +84,9 @@ public void received(RequestMoveMessage msg, int from){ oldNode.clearOccupant(); targetNode.setOccupant(piece); - System.out.println("sets homefinsihed here:"+ (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx())+"targetIdx:"+targetHomeIdx+"HighestHomeIdx:"+logic.getGame().getActivePlayer().getHighestHomeIdx()); } else{ - System.out.println("Server: SelectPieceState: entered else"); int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx]; @@ -111,9 +103,7 @@ public void received(RequestMoveMessage msg, int from){ oldNode.clearOccupant(); targetNode.setOccupant(piece); - System.out.println("sets homefinsihed:"+ (targetHomeIdx ==logic.getGame().getActivePlayer().getHighestHomeIdx())+"targetIdx:"+targetHomeIdx+"HighestHomeIdx:"+logic.getGame().getActivePlayer().getHighestHomeIdx()); - System.out.println("Server: SelectPieceMessage: received(RequestMoveMessage): setPiece(Home)"+piece.getState()); } LOGGER.log(System.Logger.Level.INFO,"Server : SelectPieceState: PieceState:"+piece.getState()); } @@ -139,7 +129,6 @@ public void received(RequestMoveMessage msg, int from){ } - System.out.println("Server: SelectPieceMessage: received(RequestMoveMessage): pieceState: wichtig"+piece.getState()); boolean homeMove = isHomeMove.get(indexOfPiece); int targIdx = targetIndex.get(indexOfPiece); @@ -159,7 +148,6 @@ public void received(RequestMoveMessage msg, int from){ } } } - System.out.println("Server changes from SelectPieceState to movePieceState"); this.choosePieceAutomaton.getTurnAutomaton().setCurrentState(this.choosePieceAutomaton.getTurnAutomaton().getMovePieceState()); }