2014-04-01 4 views
0

편집 : 여기 전체 코드 : https://dl.dropboxusercontent.com/u/65678182/assignment1.rar 가능한 모든 도움을 주시면 감사하겠습니다! 작동하는 직사각형 사이의 교차를 사용하여 충돌 체크를 수행하는 방법은 무엇입니까?


나는 브레이크 아웃 게임의 사본을 만들려고 노력하고 있어요,하지만 난 두 개체 (공 및 패들)와 교차할지 어떨지를 확인하여 문제가있다.

내가 지금 충돌 감지이 방법이 있습니다

public static void handleCollisions() 
    { 

     System.out.println(ball.getBounds());  // just to check that they     
     System.out.println(paddle.getBounds());  //are there and moving correct 

     if (ball.getBounds().intersects(paddle.getBounds())) 
      { 
     System.out.println("collision"); 
      } 
    } 

나는 그들이 내가 println 메소드에서 이러한 출력을 얻어야한다 이후로 도로 getBounds 작동 확신 : java.awt.Rectangle의 [X = 393, Y = 788, 14 = 폭, 높이 = 14] java.awt.Rectangle의 [X = Y 350 = 350, 100 = 폭, 높이 = 10]

getBounds code: 
    public static Rectangle getBounds() 
    { 
     return new Rectangle(x, y, radius*2, radius*2);      
    } 

및 I 움직이는 볼 수있게 한 지점에서 그것들은 중첩되어 있지만 그 방법은 그것을 결코 감지하지 못합니다.

나는 이것에 꽤 새로울 것이므로, 어쩌면 어딘가 어리석은 실수 일 수있다. 필요하다면 더 많은 코드를 게시 할 수 있지만 그렇지 않은 것이 좋습니다.

+0

'Rectangle.intersects()'가 작동하고 지금까지 우리에게 보여준 것은 괜찮은 것 같습니다. 문제는 당신이 우리에게 보여주지 않은 부분입니다. 예를 들어,해야 할 때 실제로'handleCollisions()'를 호출하고 있습니까? '공'과 '외륜'이 문제의 대상을 정확하게 참조하고 있습니까? 매 프레임마다 경계 상자 값을 인쇄 할 때 실제로 겹치는 부분을 보시겠습니까? 테스트로 볼의 위치를 ​​패들 위에 직접 초기화하고 움직임을 비활성화하십시오. 이렇게하면 충돌 감지가 작동하는지 쉽게 알 수 있습니다. –

+0

당신이 우리에게 보여준 출력이 * only * 출력이라면, 모든 프레임에서'handleCollisions()'를 호출하지 않는다는 것을 의미합니다. 왜냐하면 당신은 하나 이상의 프린트를 보게 될 것이기 때문입니다 실제로는 교차하지 않지만, 임의의 예제이기 때문에 가정합니다.) –

+0

실행 가능한 예제가 있습니까? – MadProgrammer

답변

3
java.awt.Rectangle[x=393,y=788,width=14,height=14] 
java.awt.Rectangle[x=350,y=350,width=100,height=10] 

당신은 두 번째 사각형의 Y/높이 350/10 볼 수 있지만의 첫 번째 y를 = 분명히

788 그들은 어떤 교차 한 다른

UPDATE 한 가지 더 이상없는 것처럼

x와 y는 볼의 중심 경우
public static Rectangle getBounds() 
{ 
    return new Rectangle(x, y, radius*2, radius*2);      
} 

코드가 있어야한다

,
public static Rectangle getBounds() 
{ 
    return new Rectangle(x-radius, y-radius, radius*2, radius*2);      
} 
+1

여기 사지를 나가고,하지만 그게 그냥 예제 출력 op가 stdout .. 덤프지고 점점 용의자가 ... – MadProgrammer

+0

그래, 그냥 예 였어. 매 단계마다 외각이 나왔고 화면에서 볼 수있는 것과 일치하는 오른쪽으로 움직이는 것처럼 보였다. – user3483682

+0

@MadProgrammer 대답이 – StanislavL