2017-04-11 14 views
0
int objectX = width/2; 
int objectY = 200; 
int snelheidY = 1; 
int score = 0; 
int richting = 1; 
int positiebal; 
int bal = ellipse(objectX, objectY, 50, 50); 

void setup() 
{ 
size(400, 400); 
positiebal = height/2 
textSize(12); 
} 


void draw() { 
background(0, 0, 0); 

ellipse(positiebal, objectY, 50, 50); 

if(objectY > 375) 
snelheidY = -snelheidY; 

if(objectY<25) 
snelheidY = -snelheidY 

objectY = objectY + snelheidY; 

text("score = " +score,4,10); 

} 

void mousePressed() 
{ 

if (dist(mouseX, mouseY, positiebal, 200)<=200) 
{score=score+1; 
snelheidY = snelheidY+1 
} 
} 

"" "" "" "" "" "" "" "" "" "" "" "" ""処理JSビンスコアとアクセラレータ

私は次のような質問があります。 1.ボールが下がっているときにそれを見ながら加速しますが、ボールが上がっているときにはうまくいかないようです。 2.スコアシステムは、ボールが押されたときにだけ上がるべきであるが、それをしない。

さらに詳しい知識がある方は、次の質問をお聞かせください。

答えて

0

ボールが下がっているときにそれを表示することでボールが加速されますが、ボールが上がっているときには動作しません。

あなたが投稿したコードは、マウスを押すたびにの下向き矢印を加速します。つまり、この行に起こる:

snelheidY = snelheidY+1; 

ボールが上向きに動いている場合は、下方向に加速すると止まるまで減速するようになります。あなたが押し続けると、それは回り回って下に行くでしょう。

ボールが進行方向に加速したい場合は、ここでロジックを追加する必要があります。たぶんifステートメントを使用して、ボールの進行方向を確認したり、加算の代わりに乗算を使用したりします。

スコアシステムは、ボールが押されたときにだけ上がるべきですが、それをしません。

あなたのコードには何も記載されていません。カーソルがボールから200ピクセル離れている限り、ユーザーがマウスを押すたびに常にスコアを上げています。マウスがボールの中に入っているかどうかを確認するには、ボールの半径を200の代わりに使用する必要があります。

また、あなたのプログラムの習慣はdebuggingです。一般的な「どうやってこれをやるの?」という質問には答えにくいです。何かを試したり、コードを書いたりして、誤ったコードの特定の部分について質問すれば、はるかに簡単です。

関連する問題