I have a 'playGame' method which creates different numbers of human and computer players based on number given. Human and computer players have different implementations of the 'createSecret' and 'makeAGuess' methods.
public void playGame() {
if(humanPlayers == 2) {
HumanPlayer codeMaker = new HumanPlayer();
HumanPlayer codeBreaker = new HumanPlayer();
}
else if(humanPlayers == 1) {
CPUPlayer codeMaker = new CPUPlayer();
HumanPlayer codeBreaker = new HumanPlayer();
}
else {
CPUPlayer codeMaker = new CPUPlayer();
CPUPlayer codeBreaker = new CPUPlayer();
}
int i = 0;
secret = codeMaker.createSecret(numberOfColours);
while(i < numberOfGuesses) {
guess = codeBreaker.makeAGuess(numberOfColours);
checkGuess();
System.out.println("Black pegs: " + blackPegs);
System.out.println("White pegs: " + whitePegs );
if(blackPegs == 4) {
System.out.println("You won the game!");
return;
}
resetPegs();
i++;
}
System.out.println("You lost");
}
The methods work fine until I nest the creation of human and CPU players in if statements, then 'cannot find symbol' error is received. How can I adapt this so that I do not have to repeat the main game code within each if statement?