суть проблемы, прошел 10 уровней а денег шас нет на апгрейд. Решил сделать попытку на основе знаний написать консольную игру крестики нолики. не дошел пока до условий игры, но застрял на смене активного игрока. Помогите пожалуйста советом!
public class Game
{
public static int[][] mas = new int[3][3]; // создаю двухмерний масив
public static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
public static Person ActivePlayer = null; //присвоил активному играку значение null
public static Person player1 = new Person('X');//создал 2 играка
public static Person player2 = new Person('O');
public static void main(String[] args) throws Exception {
//хотел заполнить "_" потом понял что при поиске для замены на "Х" или на "О" не выйдет. Заполнил от 0 до 9.
int k = 0;
for (int i = 0; i < mas.length; i++) {
for (int j = 0; j < 3; j++) {
mas[i][j] = k;
k++;
}
}
//при старте вывожу на екран массив
for (int i = 0; i < mas.length; i++) {
System.out.println(Arrays.toString(mas[i]));
}
//ход игры
while(true)
{
System.out.println(" player1");
SetActivePlayer(player1);//ход первого игрока, в условии метода SetActivePlayer как раз не разобрался, там нужна помощь.
ChangeMas();//метод меняет на символ активного игрока если есть сходство с введенным числом
for (int i = 0; i < mas.length; i++) {
System.out.println(Arrays.toString(mas[i]));// вывод на екран измененный массив
}//то самое со вторим игроком
System.out.println(" player2");
SetActivePlayer(player2);
ChangeMas();
for (int i = 0; i < mas.length; i++) {
System.out.println(Arrays.toString(mas[i]));
}
}
}
public static void ChangeMas() throws Exception//тот метод который меняет массив
{
int a = Integer.parseInt(reader.readLine());
for(int i=0;i
когда запускаю и ввожу какой символ поменять, все время меняет только на символ первого игрока
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
кстати, можно его и войдом сделать, вы все-равно нигде не используете возвращаемое значение… разве что вот в этих иф-ах
но здесь явно надо переделать. насколько я понимаю логику программы, вы хотите проверить какой игрок делает ход, и исходя из этого поменять соответствующую клетку на «маркер» игрока (х или 0). для этого сетер использовать не нужно. сетер — должен устанавливать какое-то значение. да, сетеры бывают boolean и возвращают true или false, но там логика какая: если удалось установить значение — возвращаем true, если не удалось (например, если в строку пытаемся впихнуть массив, или например в клетку где могут быть цифры от 0 до 9 вдруг каким-то чудом мы передали -15) — вот тогда возвращается false.
я вам предлагаю вообще переписать метод ChangeMas() без циклов и всего такого… примерно так: