2

遊んでいるプログラムに問題があります。プレイヤーがコンピューターと対戦し、ボードが空になるまでビー玉を取り除くこのビー玉ゲームをやろうとしています。私の問題は、ビー玉を削除するために持っているクラスがビー玉を削除していないように見えることです。単純なことだと思いますが、私にはわかりません。私が問題を抱えていると思う部分は大文字です:

Pile tiles = new Pile();
tiles.createMarbles();
marbles = tiles.getMarbles();
System.out.println("There are now " + marbles + " left!");

HumanPlayer hum = new HumanPlayer();
SmartMode cpu = new SmartMode();
StupidMode badcpu = new StupidMode();

//ComputerMove cpu = new ComputerMove();
//PlayerMove hum = new PlayerMove();
do {
    if (compMove == true && marbles > 1) {
        if (compSmart) {
            //marbles = cpu.move(marbles);
            tiles.removesMarbles(cpu.move(marbles)); //THIS RIGHT HERE
            System.out.println("There are now " + marbles + " left!");
            compMove = false;
        }  if (!compSmart) {
            //marbles = badcpu.move(marbles);
            tiles.removesMarbles(badcpu.move(marbles)); // THIS RIGHT HERE
            System.out.println("There are now " + marbles + " left!");
            compMove = false;

        }
        /* marbles = (cpu.ComputerMove(marbles, compSmart));
         System.out.println("There are now " + marbles + " left!");
         compMove = false;*/
    } else if (compMove == false && marbles > 1) {
        //marbles = (hum.move(marbles));
        tiles.removesMarbles(hum.move(marbles)); // THIS RIGHT HERE
        System.out.println("There are now " + marbles + " left!");
        compMove = true;
    }

} while (marbles > 1);

残りは回答に必要ありません

4

1 に答える 1

0

はループ内で割り当てられていないため、条件while (marbles > 1)は変更されません。marbles

使用する:

while (tiles.getMarbles() > 1)

次の構成を使用します。

do {
  if (... && marbles > 1 ) {}
  ...
} while(marbles > 1)

おそらくこれは同じことをします:

while (tiles.getMarbles() > 0 ) {
  // additional condition on marbles not required.
  if (...) {}
}

interface Movable {
   public int move();
}

class SmartPlayer implements Movable {
   public int move() {...}
}

Movable m = new SmartPlayer();
m.move();
于 2012-10-13T20:53:12.967 に答える