2013-11-23 79 views
0

我想弄清楚如何在這種情況下將黑球標爲bBall,以便從白球(wBall)擊中它的方向,然後消失打到側邊或角落的一個口袋,我該如何去完成這個?在處理中需要幫助建立檯球遊戲

ball wBall, bBall; 
int click; 
String msg; 
Boolean moving = false; 
int difx, dify; 
float cdistance; 
int steps = 20; 
void setup(){ 
    click=0; 
    size(800,400); 
    background(16,77,27); 
    wBall = new ball(35,#ffffff); 
    bBall = new ball(35,#000000); 
    msg=""; 
} 

void mouseClicked(){ 
    if(!moving){ 
click++; 
    } 
} 

void draw(){ 
    background(16,77,27); 
    String msg; 
    fill(0,0,0); 
ellipse(15,15,30,30); 
ellipse(785,15,30,30); 
ellipse(15,385,30,30); 
ellipse(785,385,30,30); 
ellipse(410,15,30,30); 
ellipse(410,385,30,30); 
msg="the click count is "+click; 
println("the click count is "+click); 
//Moving Balls\\ 
fill(255,255,255); 
noStroke(); 
bBall.xpos=(250); 
bBall.ypos=height/2; 
bBall.update(); 
if(click==0){ 
    wBall.xpos=mouseX; 
    wBall.ypos=mouseY; 
}else if(click==1){ 
    difx = wBall.xpos-bBall.xpos; 
    dify = wBall.ypos-bBall.ypos; 
}else if(click==2){ 
    cdistance = dist(wBall.xpos,wBall.ypos,bBall.xpos,bBall.ypos); 
    if (cdistance>bBall.ballDiam/2){ 
    moving = true; 
    wBall.xpos-=difx/steps; 
    wBall.ypos-=dify/steps; 
    }else{ 
     moving = false; 
     wBall.visible=false; 
     click=3; 
    } 
} 
wBall.update(); 
} 

class ball{ 
    int xpos, ypos; 
    color myColor; 
    int ballDiam; 
    boolean visible = true; 
    ball(int tempdiam, color tempColor){ 
    myColor=tempColor; 
    ballDiam=tempdiam; 
    } 

    void update(){ 
    if(visible){ 
    fill(myColor); 
    ellipse(xpos,ypos,ballDiam,ballDiam); 
    } 
    } 
} 

回答

1

它會讓你分手您詢問多個問題事情變得更容易,而不是說「修復我的比賽」 ......所以,工作,直到你偶然發現的東西,你解決不了,然後問(對於具體的事情)在這裏,得到一個答案,並再次啓動相同的過程。

球正在用鼠標正確移動,但正在留下蹤跡。那是因爲你沒有在每個循環中繪製背景。會發生什麼是每次調用draw()時,畫布都會填滿上一個畫布。爲了避免那麼叫

background(16,77,27); 

在void draw(){行後面,它會用你告訴它的任何顏色填充畫布!

+0

非常有幫助!謝謝!我會試着對我的下一個問題做更具體的描述! – user2612494