2014-07-10 2 views
0

저는 객체 지향 접근법을 통해 프로그래밍을 연습하려고합니다. 화면 주위에서 튀는 공의 그래픽을 표시하는 orb라는 클래스를 만들었습니다. 충돌 처리를 추가하고 싶습니다. orb.update 메서드가 충돌을 처리하도록하여 OOP 접근 방식을 적용하는 것이 가장 좋습니다. 그러나 이렇게하려면 다른 오브 개체의 목록에 액세스해야합니다. 형식 구를 사용하여 선언 된 모든 변수 목록을 얻을 수있는 방법이 있습니까? 이것을 찾을 수 있다면 orb의 x와 y 변수를 참조하여 캔버스에있는 다른 orbs에 너무 가까이 있지 않도록 할 수 있습니다.클래스가 충돌 검색을 위해 다른 클래스를 모두 검사하도록하려면 어떻게해야합니까?

<!DOCTYPE html> 
<html> 
<body> 
<center> 
<script src="http://www.scottbunin.com/processing.js"></script> 
<script src="processing.js"></script> 
<script type="application/processing"> 
size(600,600); 

orb h1 = new orb(100, 200, 5, 100); 
orb h2 = new orb(400, 200, 5, 100); 
orb h3 = new orb(400, 200, 5, 100); 

void setup(){ 
    size(600, 600); 
    frameRate(120); 
} 

void draw() { 
    background(200); 
    h1.update(); 
    h2.update(); 
    h3.update(); 
} 

class orb { 
    float xpos, ypos, speed, diameter, xOffset, yOffset, radius; 
    orb (float x, float y, float s, float size) { 
    xpos = x; 
    ypos = y; 
    diameter = size; 
    xOffset = s; 
    yOffset = s; 
    radius = .5 * diameter; 
    } 

    void update() { 
    ypos += yOffset; 
    xpos += xOffset; 
    if(yOffset<0&&ypos<0+radius){ 
     yOffset=-yOffset; 
     imperfectEdge(); 
     } 
    if(yOffset>0&&ypos>height-radius){ 
     yOffset=-yOffset; 
     imperfectEdge(); 
     } 
    if(xOffset<0&&xpos<0+radius){ 
     xOffset=-xOffset; 
     imperfectEdge(); 
     } 
    if(xOffset>0&&xpos>width-radius){ 
     xOffset=-xOffset; 
     imperfectEdge(); 
     } 
    noStroke(); 
    for(a = diameter; a > 0; a-=5){ 
     fill(0,0,255-a); 
     ellipse(xpos, ypos, a, a); 
     } 
    } 
    void imperfectEdge(){ 
    xOffset=xOffset+random(-.1,.1); 
    yOffset=yOffset+random(-.1,.1); 
    } 

} 


</script><canvas></canvas> 
</body> 
</html> 

답변

0

"일반적인"방법은 장면 목록을 만드는 것입니다. 현재 장면에있는 모든 개체 (사용자의 경우, 화면)의 목록입니다.

장면에서 모든 개체를 처리하게하고 해당 개체의 목록을 참조하여 모든 개체에 쉽게 액세스 할 수있게하십시오. 충돌 계산을 최적화하는 데에도 유용합니다. (쿼트 트리 사용)

+0

감사합니다. 이 방법을 사용하면 개별 객체가 아니라 캔버스에있는 객체 그룹으로 충돌을 처리합니다. – Scott