2017-10-19 5 views
1

창에 특정 점을 그리는 코드를 작성하고 싶습니다. 나는 3 개의 다른 점 $ (e1, e11), (e2, e22), (e3, e33) $을 가지고있다. 임의로 하나를 선택하고 출력에 따라 다른 지점을 그립니다.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"을 실행해야하지만 두 점만 나타납니다. 내 수학과 무언가가 있다고 생각해. 랜덤.

+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);으로 변경해야합니다. 두 가지 경우에 똑같은 것을 그리는 것입니다.

+0

감사합니다. 나는 그것을 업데이트했습니다 .. 여전히 3 점만 그려야하며, 항상 실제 위치에서 선택한 점으로 가고 싶습니다 – Cherry

+0

채워진 좌표를 인쇄 해 주시겠습니까? e1, e11 등의 값을 무작위로 변경해야 할 수도 있습니다. 또한 window.fillRect ((pos1 + e1)/2, (pos2 + e11)/2, 5 등의 모든 괄호에 괄호를 추가해야합니다. 5); ' –