Я пытаюсь создать простую шахматную игру, чтобы получить некоторый опыт работы с Java, но я застрял и нуждаюсь в совете о том, как реализовать несколько игроков в моей игре.Какой подход я должен предпринять, чтобы реализовать несколько игроков в простой пошаговой игре?
У меня есть класс под названием Player
, который вызывается методом main
для создания объекта Player
со всеми свойствами. Следуя этой идее, я подумал, что добавление нескольких игроков будет таким же простым, как создание нескольких экземпляров Player
, однако оказалось, что это довольно сложно, так как мне нужно получить доступ к переменным всех игроков из нескольких других классов, кроме тех, в которых он был создан, и я могу Невозможно найти простой способ сделать это.
Является ли мой подход правильным или лучше (проще и шире) способами, с точки зрения структуры кода и связывания различных классов, для реализации многопользовательской функциональности?
EDIT: класс
плеера с частными переменными:
public class Player {
private int playerID;
private String playerName;
...
}
Это, как я инициализация несколько объектов игрока в зависимости от количества игроков в игре:
public static void createPlayers(int numberOfPlayers) {
if (numberOfPlayers == 2) {
Player playerOne = new Player(1);
Player playerTwo = new Player(2);
} else if (numberOfPlayers == 4) {
Player playerOne = new Player(1);
Player playerTwo = new Player(2);
Player playerThree = new Player(3);
Player playerFour = new Player(4);
}
}
Например У меня есть метод в классе Board
, который печатает 2D-массив для консоли, и если он найдет playerID
, скажем, PlayerOne
, это shou ld напечатать его ID в заданном поле. Однако я не могу получить доступ к соответствующему способу доступа, потому что PlayerOne был инициализирован в main
, а не в Board
.
private static final int boardFieldEmpty = 0; // 0 on a board represents empty field
private static final int boardFieldChampion = 1; // 1 on a board represents a champion
private static final int boardFieldBase = 2; // 2 on a board represents a base
// Initialise board and fill it with empty fields
public Board(int boardRows, int boardColumns) {
boardSize = new int[boardRows][boardColumns];
for (int r = 0; r < boardRows; r++) {
for (int c = 0; c < boardColumns; c++) {
boardSize[r][c] = boardFieldEmpty;
}
}
}
// Print a board on the screen
public void printBoard() {
for (int r = 0; r < boardSize.length; r++) {
for (int c = 0; c < boardSize[0].length; c++) {
if (boardSize[r][c] == boardFieldEmpty) {
// Empty field found
System.out.print(" |_|");
} else if (boardSize[r][c] == boardFieldChampion) {
// Champion field found
System.out.print(" |" + PlayerOne.getPlayerID + "|");
} else if (boardSize[r][c] == boardFieldBase) {
// Base field found
System.out.print(" |X|");
}
}
System.out.println();
}
System.out.println();
}
EDIT 2: Учитывая мой код, как бы я должен изменить его для того, чтобы каждый экземпляр объекта проигрывателя доступны из разных классов?
Можете ли вы изменить свой вопрос, включив в него некоторый код, особенно в том месте, где вы пытаетесь получить доступ к данным этого игрока? –
После того, как вы отредактировали, ясно, что вам нужен шаблон Factory ... см. Мой ответ. – Renato