Я пытаюсь создать двух игроков в программе, которую пишу. Проблема в том, что есть три типа игроков, которые могут быть созданы, но чтобы ссылаться на них позже, я хочу, чтобы они были названы как игрок один и игрок два. Три класса: «Человек», «Компьютер» и «Карен» являются производными от класса «Игрок». Мне интересно, как создать массив Player, в который я могу затем поместить объекты player1 и player2. Возможно ли это сделать?
int playerType = 0;
int highestScore = 0;
Player[] player = new Player[2]; // This is the array of type Player, the master class
Scanner userInput = new Scanner (System.in);
for (int i = 1; i < 3; i++)
{
System.out.println ("Choose a type of player:");
System.out.println ("1: Human");
System.out.println ("2: Computer (Threshold = 20)");
System.out.println ("3. Computer (Custom)");
System.out.print ("? : ");
playerType = Integer.valueOf(userInput.nextLine()); // gets input choice from user
switch (playerType)
{
case 1:
Human player[i] = new Human();
case 2:
Computer player[i] = new Computer();
case 3:
Karen player[i] = new Karen();
}
}
Есть еще один метод, который я пробовал, используя оператор if для создания объекта playerOne или playerTwo в зависимости от того, на какой итерации цикла for мы были (i). К сожалению, похоже, что java не скомпилирует его, потому что существует несколько объявлений одной и той же переменной, хотя должно выполняться только одно из объявлений.
if(playerNumber == 1){
switch (playerType)
{
case 1:
Human playerOne = new Human();
case 2:
Computer playerOne = new Computer();
case 3:
Karen playerOne = new Karen();
}
}
if(playerNumber == 2){
switch (playerType)
{
case 1:
Human playerTwo = new Human();
case 2:
Computer playerTwo = new Computer();
case 3:
Karen playerTwo = new Karen();
}
}
Решение, предложенное OldProgrammer, приведено ниже, оно сработало отлично. Однако теперь у меня возникла проблема с вызовом методов: Human, Computer и Karen. Я получаю следующую ошибку при попытке выполнить:
System.out.println(player[i].getName() + ", your turn");
Сообщение об ошибке:
Main.java:38: error: cannot find symbol
System.out.println(player[i].getName() + ", your turn");
^
symbol: method getName()
location: class Player
1 error
Метод в каждом классе выглядит так:
public class Karen extends Player {
private String playerName = "Karen";
public String getName(){
return playerName;
}
}