敵除けゲーム
//弾除けゲーム float score = 0; float x = 50, y = 250; //自キャラの座標 float t1X = 50, t1Y=50, t1Vx=2, t1Vy=2; //敵キャラ1 float t2X = 50, t2Y=50, t2Vx=2, t2Vy=2; //敵キャラ2の変数 void setup() { size(300, 300); frameRate(60); } void draw() { background(255); //障害物の描画 fill(0, 0, 255); rect(0, 0, width, 10);//ゴールの線 //自キャラの移動 if (x < mouseX) { x += 1; } else if (x > mouseX) { x -= 1; } //y方向についても同様の処理を記述 fill(255, 0, 0); ellipse(x, y, 20, 20); //自キャラの描画 //ゴールした時の処理 if (y < 10) { fill(0); text("Clear!!", 20, 50); noLoop(); } //敵キャラ1の移動 if (t1X > width) { t1Vx = -2; } else if (t1X < 0) { t1Vx = 2; } t1X += t1Vx; fill(0, 255, 0); ellipse(t1X, t1Y, 20, 20); //敵1との当たり判定 if (checkCollision(x,y,20, t1X, t1Y, 20)) { //敵と自キャラの距離が20未満なら fill(0); text("game over!!", 20, 50); //ゲームオーバー noLoop(); } //ここに敵キャラ2, 3と処理を追加していく text("score:" + score, 10, 40); } /*(円1のx, y, 幅, 円2のx, y, 幅)を引数として渡すと、衝突判定の結果を返す 返り値はtrueかfalse */ boolean checkCollision(float x1, float y1, float w1, float x2, float y2, float w2) { boolean hit = false; if(dist(x1, y1, x2, y2)<=w1/2+w2/2){ hit = true; } return hit; }
Copy