/** * Checks if the last marble landed on the current player's playerCup * * @param buttonID */ protected boolean giveAnotherTurn(int buttonID) { if (player1.getTurn() && buttonID == 7 && areThereValidMoves(player1)) { return true; } if (player2.getTurn() && buttonID == 15 && areThereValidMoves(player2)) { return true; } return false; }
/** This forces the switch of turns.It is called when one player doesn't have valid moves */ protected void switchTurn() { if (player1.getTurn() && areThereValidMoves(player2)) { player2.setTurn(true); player1.setTurn(false); } else if (player2.getTurn() && areThereValidMoves(player1)) { player1.setTurn(true); player2.setTurn(false); } }
protected void stealOppositeCup(int cupNumber) { PocketCup nextPocketCup = (PocketCup) board.getCups()[cupNumber]; PocketCup oppositeCup; if (player1.getTurn() && cupNumber < 7) { oppositeCup = (PocketCup) board.getCups()[cupNumber + ((7 - cupNumber) * 2)]; int oppositeCupNumbers = oppositeCup.emptyCup(); // take last marble from the cup alongside the opposite cup's one. nextPocketCup.addMarbles(-1); board.getPlayerCup1().addMarbles(oppositeCupNumbers + 1); } else if (player2.getTurn() && cupNumber > 7 && cupNumber < 15) { oppositeCup = (PocketCup) board.getCups()[(14 - cupNumber)]; int oppositeCupNumbers = oppositeCup.emptyCup(); // take last marble from the cup alongside the opposite cup's one. nextPocketCup.addMarbles(-1); board.getPlayerCup2().addMarbles(oppositeCupNumbers + 1); } }
/** * @param idCurrentCup * @param marblesFromEmptiedCup */ protected void putMarblesInNextCups(int idCurrentCup, int marblesFromEmptiedCup) { int cupNumber = idCurrentCup + 1; for (int i = 0; i < marblesFromEmptiedCup; i++) { if (cupNumber == 7 && player2.getTurn()) { cupNumber++; } else if (cupNumber == 15 && player1.getTurn()) { cupNumber = 0; } Cup nextPocketCup = board.getCups()[cupNumber]; // check at the last iteration if cup is empty if ((i == marblesFromEmptiedCup - 1) && nextPocketCup.isEmpty() && cupNumber != 7 && cupNumber != 15) { stealOppositeCup(cupNumber); } nextPocketCup.addMarbles(1); cupNumber++; // stay in the range of 16 cups. if (cupNumber > 15) { cupNumber = 0; } } }