确定玩家基于文本的基础和交叉

时间:2011-11-06 21:40:19

标签: java arrays if-statement for-loop

我是Java的初学者,在某些练习中,我正在创建基于文本的noughts和crosses。到目前为止我所拥有的是Player类,Board类和Game类。在Game类中,我有一个Board实例和两个Player实例。我已经设法为玩家编写代码以进行移动并确定游戏是赢还是抽奖。我现在想确保一个玩家一次只能进行一次移动而不能超过一次连续移动,即玩家A,玩家B,玩家A,玩家B ......而不是玩家A,玩家A,玩家甲...

我想这样做的方法是在myTurn的Player类中创建一个布尔字段,并在这些方面有一个方法:

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

然后我在游戏中调用此方法,然后才进行移动,但由于某种原因,它不起作用。也许我在某个地方犯了错误,但如果有人有任何其他方式/想法,我可以写一些代码来确定付款人是否有效,请告诉我。如果您能提供一些示例,我将不胜感激,因为我还是初学者。

2 个答案:

答案 0 :(得分:3)

我会让Game类对此负责。 E.g:

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

        isFirst = !isFirst;
    }

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

它甚至在逻辑上有意义。玩家可以一个接一个地做出很多动作。这是游戏(游戏规则)阻止他这样做。

答案 1 :(得分:0)

也许我不太了解你的问题,但是:

  • 谁设置myTurn?
  • 谁“召唤”了player.play()?

似乎这应该是由同一个人(Game / GameManager类?)完成的。 那么,为什么玩家不只是玩游戏的描述,你让管理的任务转向另一个类?

干杯