2017-11-20 18 views
0

, 그것은 화면에 표시되고 캔버스 후 삭제하고 캔버스의 하단 라인에 반송 상단에 시작됩니다 공의 번호를 삽입하도록 요청합니다.배열의 마지막 요소가 조건을 충족하면 루프 끝을 만드는 방법은 무엇입니까? 내 튀는 공 프로그램에서

= true로 완성 된 애니메이션이 중지됩니다. 지금까지 첫 번째 볼의 X 위치가 550을 지나면 애니메이션이 중단됩니다. 모든 볼의 X 위치가 550을 초과하면 애니메이션을 끝내려면 어떻게해야합니까?

public void multiBounce(int numBalls) 
{ 
    BouncingBall[] balls; 
    balls = new BouncingBall[numBalls]; 

    int x = 50; 
    int y = 150; 

    for (int i = 0; i < balls.length; i++){ 


      balls[i] = new BouncingBall(x, y, 16, Color.blue, ground, myCanvas); 
      x = x + 20; 
      y = y - 30; 
      balls[i].draw(); 
    } 

    boolean finished = false; 

    while(!finished) { 

    for (int i = 0; i < balls.length; i++){ 

      balls[i].move(); 

    } 

    for (int i = 0; i < balls.length; i++){ 
     if (balls[i].getXPosition() >= 550){ 

      finished = true; 

     } 
    } 
} 
+0

루프를 종료하는 데 사용하십시오. –

+0

* 어떤 * 볼이'위치가있는 경우 당신은 참으로 완성 설정하는> ='(550) 대신에, 설정'첫 = TRUE '을 완료하고, 어떤 볼이 위치'<550'이있는 경우 false로 설정합니다. –

답변

0

공이 원하는 위치를 벗어 났는지 확인하십시오. 이 코드 스 니펫은 작업을 수행해야합니다. 마지막 for 루프를 아래 코드로 바꿉니다.

finished=true; 
for (int i = 0; i < balls.length; i++){ 
    if (balls[i].getXPosition() >= 550){ 
     finished = finished && true; } 
    else{ 
     finished=false; 
     break; 
    } 
} 
0

break 문을 사용해야합니다. 자사의 loop 내부에 발생하는 경우, loop은 즉시 종료하고, 프로그램 제어는 loop 다음의 다음 명령문에서 실행이 재개됩니다. 자세한 내용은 Branching Statements

public void multiBounce(int numBalls) 
    { 
     BouncingBall[] balls; 
     balls = new BouncingBall[numBalls]; 

     int x = 50; 
     int y = 150; 

     for (int i = 0; i < balls.length; i++){ 


      balls[i] = new BouncingBall(x, y, 16, Color.blue, ground, myCanvas); 
      x = x + 20; 
      y = y - 30; 
      balls[i].draw(); 
     } 

     boolean finished = false; 

     while(!finished) { 

      for (int i = 0; i < balls.length; i++){ 

       balls[i].move(); 

      } 

      for (int i = 0; i < balls.length; i++){ 
       if (balls[i].getXPosition() < 550){ 
        finished = false; 
        break; 
       } 
       else { 
        finished = true; 
       } 
      } 

      } 
     }