0
私はJavaプログラミングの新機能です。ちょっと作っただけです。数字のゲームを推測して、今はGUIを作成する必要があります。私はいくつかのシンプルなshowMessageやその他のものから始めますが、私は問題があります。ヒューマン・プレイヤーの結果をどのように定義し、それを受け入れてゲームを続けるのかゲームは人間とロボットの間にあります。私の番号の答えを入力すると問題が始まり、ゲームが止まるだけです。私は今コードが壊れていることを知っていますが、私はいくつかのアドバイスやヒントを与えることができますか?おかげJava、Swing!結果を受け入れて遊んでください
**public class Human extends Player {**
private Player guesser;
private final PrintStream printer;
private final Scanner scanner;
private final String name;
Human(String name, PrintStream printer, Scanner scanner) {
this.name = name;
this.printer = printer;
this.scanner = scanner;
}
@Override
public String getName() {
return name;
}
@Override
public int guess(int n) {
JOptionPane.showInputDialog(String.format ("What do you think about %d?"));
char result = scanner.nextLine().trim().charAt(0);
return result == '=' ? 0 : result == '<' ? -1 : 1;
}
@Override
public int play() {
JOptionPane.showMessageDialog(null, String.format("%s wants your guess:", guesser.getName()), null, JOptionPane.PLAIN_MESSAGE);
int n = Integer.parseInt(scanner.nextLine().trim());
return guesser.guess(n);
}
@Override
public void setGuesser(Player player) {
this.guesser = player;
}
}
**public class Robot extends Player {**
private static final Random RANDOM = new Random();
private final String name;
private Player guesser;
private final PrintStream printer;
private int min = 0;
private int max = Integer.MAX_VALUE;
private int last = 1 + RANDOM.nextInt(1);
private final int guessedNumber;
public Robot(String name, PrintStream printer, int min, int max) {
this.name = name;
this.printer = printer;
this.guessedNumber = min + RANDOM.nextInt(max - min);
}
@Override
public String getName() {
return name;
}
@Override
public int guess(int n) {
int result = Integer.compare(guessedNumber, n);
printer.printf("%s says that %d is %s.%n", getName(), n,
result < 0 ? "too much" : result > 0 ? "not enough" : "just fine"
);
return result;
}
@Override
public int play() {
JOptionPane.showMessageDialog(null,"Robot thinks that Human guessed " + last,"aaa", JOptionPane.PLAIN_MESSAGE);
int guessResult = guesser.guess(last);
if (guessResult != 0) {
if (max - min <= 0) {
throw new IllegalStateException("YOU BLOODY CHEATER! SCREW YOU.");
}
if (guessResult == -1) {
max = last - 1;
} else {
min = last + 1;
}
}
last = min + (max - min)/2;
return guessResult;
}
@Override
public void setGuesser(Player player) {
this.guesser = player;
}
}
'Human(文字列名、PrintStreamプリンタ、スキャナスキャナ){' GUIベースのアプリケーションになるためには、このゲームを大幅に変更する必要があるようです。 –
[例](http://stackoverflow.com/a/3072979/230513)。 – trashgod