2017-10-19 2 views
1

ウィンドウ上に特定の点を描画するコードを記述したいと思います。私は3つの異なる点$(e1、e11)、(e2、e22)、(e3、e33)$を持っています。ランダムに1つを選択し、出力に応じて別の点を描きたい。Javaの "Math.random()"に関する問題

public class ChaosGame { 

    public static void main(String[] args) { 
     Window window = new Window("Chaos", 800, 800); 
     window.open(); 

     int e1 = 420; 
     int e11 = 170; 
     int e2 = 230; 
     int e22 = 670; 
     int e3 = 700; 
     int e33 = 540; 

     while (window.isOpen()) {// ändere den Fensterinhalt 
      int pos1 = 100; 
      int pos2 = 300; 
      int i = (int) (Math.random() * 3); 

      if (i == 0 || i == 3) { 
       window.fillRect(pos1 + e1/2, pos2 + e11/2, 5, 5); 
       pos1 = e1/2; 
       pos2 = e11/2; 
       window.refresh(); 
      } else if (i == 1) { 
       window.fillRect(pos1 + e2/2, pos2 + e22/2, 5, 5); 
       pos1 = e2/2; 
       pos2 = e22/2; 
       window.refresh(); 
      } else { 
       window.fillRect(pos1 + e3/2, pos2 + e33/2, 5, 5); 
       pos1 = e3/2; 
       pos2 = e33/2; 
       window.refresh(); 
      } 
     } 
    } 
} 

fillRectは新しいウィンドウでマイポイントを描画します。このプログラムを実行すると、ウィンドウを閉じるまで "while window.isOpen"に進むはずですが、2つのポイントしか表示されません。私はMath.random()と何かが間違っているかもしれないと思う。

+0

矩形の座標を印刷します。それらをウィンドウの外に描画しているだけかもしれません。 –

+0

私は窓の外にどのように描くことができますか?位置は、すべてが内部に描画されるように選択する必要があります – Cherry

+0

'else'の' fillRect'を見てください。しかし、あなたがそれを修正しても、なぜあなたがこれをランダムな位置に描くと思うのかわかりません。 –

答えて

0

elseステートメントのwindow.fillRect(pos1 + e2/2, pos2 + e22/2, 5, 5);window.fillRect(pos1 + e3/2, pos2 + e33/2, 5, 5);に変更する必要があります。あなたは2つのケースで同じものを描いています。

+0

ありがとう、私はそれを更新しました..まだ、それは3点だけを描画し、それは常に実際の位置から選択した点に向かって行くようにします – Cherry

+0

塗りつぶされた座標を印刷できますか? e1、e11などの値をランダムに変更する必要があるかもしれませんし、 'window.fillRect((pos1 + e1)/ 2、(pos2 + e11)/ 2,5、 5)。 ' –

関連する問題