Определяющие игроки превращают текстовые нолики и крестики - PullRequest
0 голосов
/ 07 ноября 2011

Я новичок в Java и для некоторой практики я создаю текстовые крестики и нолики. Пока у меня есть класс Player, класс Board и класс Game. В классе Game у меня есть один экземпляр Board и два экземпляра Player. Мне удалось написать код, чтобы игрок мог сделать ход и определить, является ли игра выигрышной или ничьей. Теперь я хочу убедиться, что игрок может иметь только один ход за раз и не более одного последовательного хода, т.е. игрок A, игрок B, игрок A, игрок B ...... вместо игрока A, игрок A, игрок A ...

Я подумал об этом, чтобы создать логическое поле в классе Player myTurn и создать метод в следующем формате:

public boolean isMyTurn (){
if (myTurn == true){
return false;
}
return true;
}

Затем я вызываю этот метод в игровом стекле, прежде чем сделать ход, но по какой-то причине он не работает. Возможно, я где-то допустил ошибку, но если у кого-то есть другие способы / идеи, я мог бы написать код, чтобы определить, действителен ли ход плательщика, пожалуйста, дайте мне знать. Был бы признателен, если бы вы могли привести несколько примеров, поскольку я все еще начинающий.

Ответы [ 2 ]

3 голосов
/ 07 ноября 2011

Я бы возложил ответственность за это на класс Game.Например:

class Game {
    ...
    public void makeTurn(){
        if(isFirst)
            firstPlayer.makeTurn();
        else
            secondPlayer.makeTurn();

        isFirst = !isFirst;
    }

    private bool isFirst = true;
    private Player firstPlayer, secondPlayer;
}

Это даже логично.Игрок может сделать много ходов один за другим.Это игра (правила игры), которая мешает ему сделать это.

0 голосов
/ 07 ноября 2011

возможно, я не совсем понял вашу проблему, но:

  • Кто устанавливает myTurn?
  • Кто "вызывает" player.play ()?

Похоже, что это должен сделать тот же парень (класс Game / GameManager?).Так почему бы игрокам просто не играть с приведенным описанием игры, и вы позволяете заданию управлять ходами в другой класс?

Приветствия

...