ネットや教科書を参考にして作ってみたのですが、まったく違ったプログラムができあがってしまいました。
ゲームの内容は6つの球をよけるというものです。しかし、できたのはペイントのようなものでした。
自信があったために、どこが間違っているのかわかりません。
enball[] ball = new enball[6]; //敵ボールを設定 int i = 0; //forに使う int j = 0; //同上 float[] enballx = new float[6]; //敵ボールx座標 float[] enbally = new float[6]; //敵ボールy座標 int flg = 0; int M6 = 0; //ボールが6で1 void setup(){ frameRate(60); size(600,600); for(i = 0; i<6; i=i+1){ ball[i] = new enball(80,80,80,80); //敵ボールを作った frameRate(60);}} void draw(){ for (i = 0; i<6; i=i+1){ hitme(); //自機に当たった ball[i].latest(); //最新の状態にする ball[i].hitwall(); //画面端にヒット ball[i].play(); }//動き ellipse(mouseX,mouseY,10,10);} //class //敵ボールについて class enball{ PVector posi; //位置設定 PVector sp; //速度設定 enball(float X, float Y, float spX, float spY){ posi = new PVector(X,Y); //位置のを作った sp = new PVector(spX,spY); //速度のを作った } void latest(){ posi.add(sp);} //速度add void hitwall(){ if((posi.x > width) || (posi.x < 0)){ sp.x = -sp.x;} if((posi.y > height) || (posi.y < 0)){ sp.y = -sp.y;}} void play(){ stroke(0,0,255); fill(0,0,255); ellipse(posi.x+5,posi.y+5,12,12); enballx[i] = posi.x; enbally[i] = posi.y;} //速度と位置をセットする void set(float X,float Y,float spX,float spY){ posi.set(X,Y); sp.set(spX,spY);}} //関数 void hitme(){ if(M6 ==1 && mouseX + 10 > enballx[i] && mouseX - 10 < enbally[i] && mouseY - 10 <enbally[i] || flg ==1){ fill(0); textSize(50); textAlign(CENTER,CENTER); text("ドンマイ!",300,300); noLoop(); }} void keyPressed(){ if(key =='A' || key == 'a'){ flg = 0; loop();}} void mousePressed() { ball[j].set(mouseX + 10, mouseY + 10, random(-10, 10), random(-10, 10)); j++; if (j == 6) { // ボールを20個つくる j = 0; M6 = 1; // ボールが最大となった } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/05 00:54