我在java中模拟了mastermind游戏。玩家猜测计算机选择的4位数字。如果正确的数字位于正确的位置,那么它就是公牛,如果不是 - 牛。我试图在Game类中设置它,这样如果它是4 Bulls,则游戏结束。我在Game构造函数中创建了一个名为Bulls的新变量,它等同于Oracle类中的Bulls,但它似乎不起作用。我试图在Oracle约束器中而不是在方法中初始化公牛,但它似乎也没有工作。有什么建议?我感谢任何帮助。代码在下面的链接中。对不起,它有点凌乱...... Look at pic called the BullsGame and the Oracle pics
这就是我试图从类Oracle调用变量bulls的方法,其中计算机是一个对象:
computer = new Oracle();
theBulls = computer.bulls;
turns = 0;
input = new Scanner(System.in);
然后我试图在这里使用它:
if (theBulls == 4){
System.out.print("Thanks for playing!");
}
else{
more code
答案 0 :(得分:0)
当您的main
方法创建new Game()
时,该构造函数会创建new Oracle()
。
Oracle
构造函数未指定bulls
的值,因此默认为0
。
Game
构造函数继续,并将此0
值复制到theBulls
。
然后拨打g.play()
,最终检查theBulls == 4
。这将始终失败,因为theBulls
从未从0
更改。
我怀疑您正在想象theBulls = computer.bulls
会theBulls
自动更新,因为computer.bulls
会有所不同。事实并非如此。
一个简单的解决方案是将if
条件更改为
if (computer.bulls == 4) {