なんとかしてゲームを二つ作りました。
下記の二つのゲームを一つのゲームにしたいのですが、方法がよく分かりません。
私がとった方法は、一つのゲーム中のvoid setup(),void draw()の中にもう一つのゲームのvoid draw(),void setup()の内容を書くというものです。
しかし、エラーが生じてしまいました。
下記の二つのゲームを一つのゲームとして成り立たせたいです。
ゲーム概要は青いボール(敵)を避けながら、上から降ってくる赤いボール(仲間)に触れるというものです。
float
1float frbally; //仲間ボールのy座標 2 3float frsp=0; //仲間ボールの速度 4float fra=0; //仲間ボールの加速度 5float g = 3; 6 7 8float touch=0; 9 10void setup(){ 11 12 size(500,650); 13 14 frballx=width/2; 15} 16 17void draw(){ 18 background(255); 19 smooth(); 20 21 frsp = frsp + g /30+fra; 22 frbally = frbally + frsp; 23 24 stroke(255,0,0); 25 fill(255,0,0); 26 ellipse(frballx,frbally,30,30); 27 28 if(frbally>665){ 29 textSize(20); 30 text("GameOver",20,20); 31 frameRate(0); 32 } 33 if(mouseX>frballx-30 && mouseX<frballx+30 && mouseY>frbally-30 && mouseY<frbally+30){ 34 35 touch=80; 36 37 fra=0.0001; 38 39 next(); //次の球がでる 40 }} 41 42//次の球の設定 43void next(){ 44 frbally=-200; 45 frsp=0; 46 frballx=20 + random(465); 47 48}
enball[] ball = new enball[7]; //敵ボールの定義 int i = 0; // forに使う int j= 0; // 同上 int M7 = 0; // ボールが7個ある float[] enballx = new float[7]; // 敵ボールの座標 float[] enbally = new float[7]; // int flg = 0; void setup() { size(500,650); for (i = 0; i < 7; i=i+1) { ball[i] = new enball(30, 30, 30, 30); //敵ボール ball[j].set(mouseX + 15, mouseY + 15, random(5, 8), random(5,8)); //(float X, float Y, float enspX, float enspY) enspXは敵のボールのX速度 enspYは敵ボールのY速度 j=j+1; if (j == 7) { j = 0; M7 = 1; } } } void draw() { background(255); for (i = 0; i < 7; i=i+1) { ball[i].latest(); //最新の画面に切り替える ball[i].hitwall(); //画面の上下左右端に当たったときの設定用 ball[i].ballfun(); //ボールの設定用 function hitme(); // ボールが自機にヒットしたときの設定用 } stroke(255,0,0); fill(255,0,0); rect(mouseX-5, mouseY-5, 10, 10); //自機の設定 } class enball { //敵ボール PVector posi; //位置を定義 PVector ensp; //速度を定義 enball(float X, float Y, float enspX, float enspY) { posi = new PVector(X, Y); //向きベクトル ensp = new PVector(enspX, enspY); //速度ベクトル } void latest() { posi.add(ensp); //位置+速度 } void hitwall() { if ((posi.x > width)||(posi.x < 0)) { ensp.x = -ensp.x; //ボールが左右の壁に触れると反射 } if ((posi.y > height)||(posi.y < 0)) { ensp.y = -ensp.y; //ボールが上下の壁に触れると反射 } } void ballfun() { stroke(0,0,255); fill(0,0,255); ellipse(posi.x+10, posi.y+10, 30, 30); //ボールの描画 enballx[i] = posi.x; enbally[i] = posi.y; } void set(float X, float Y, float enspX, float enspY) { //位置、速度 posi.set(X, Y); ensp.set(enspX, enspY); } } void hitme() { //敵ボールが自機ふヒットしたときGameOver if (M7 == 1 && mouseX + 18 > enballx[i] && mouseX - 18 < enballx[i] && mouseY + 18 > enbally[i] && mouseY - 18 < enbally[i] || flg == 1) { fill(255,0,0); // 文字色 textSize(20); text("GameOver",20,20); noLoop(); } }
回答1件
あなたの回答
tips
プレビュー