2016-04-26 3 views
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; 
    } 
} 
+1

'Human(文字列名、PrintStreamプリンタ、スキャナスキャナ){' GUIベースのアプリケーションになるためには、このゲームを大幅に変更する必要があるようです。 –

+1

[例](http://stackoverflow.com/a/3072979/230513)。 – trashgod

答えて

0

変更し、あなたの

PrintStream.print方法

JOptionPane.showMessageDialogに

、またはより良いは、テキストボックスやラベルなどのGUI要素を入れて変更テキスト。

関連する問題