前提・実現したいこと
隕石の中心座標が正方形の中に入った時にゲームオーバーとしたい。
ここに質問の内容を詳しく書いてください。
隕石を回避する、いわゆる避けゲーをprocessingで作りたいのですが、衝突した時の判定のif文を書いたらエラーが出て、どこを改善したら良いのか分からないため質問しました。
発生している問題・エラーメッセージ
エラーメッセージ ArrayIndexOutOfBoundsException: 50
該当のソースコード
ソースコード float X=0.0; int count=0; int[]meteo_x=new int[50]; int[]meteo_y=new int[50]; int[]meteo_speed=new int[50]; int time=0; void setup() { size(500, 750); rectMode(CENTER); int i; for (i=0; i<50; i++) { meteo_x[i]=int(random(width));//隕石が出現するx座標 meteo_y[i]=0;//隕石が出現するy座標 meteo_speed[i]=int(random(2, 7));//隕石のスピード } } void draw() { background(0); textSize(40); time=millis()/1000; text(time, 40, 50); meteo(); stroke(255); rect(250+X, 700, 20, 20);//自機 } void meteo() { int i; for (i=0; i<50; i++) { stroke(255); ellipse(meteo_x[i], meteo_y[i], 15, 15);//隕石は円で表現 meteo_y[i]=meteo_y[i]+ meteo_speed[i];//隕石は上から下に移動 if (meteo_y[i]>height) {//画面下に消えたら上から出てくる meteo_x[i]=int(random(width)); meteo_y[i]=0; meteo_speed[i]=int(random(2, 7)); } else if (240+X<meteo_x[i] && meteo_x[i]<260+X && 690<meteo_y[i]&&meteo_y[i]<710) {//隕石の中心座標が自機の中に入ったらゲームオーバー background(255); textSize(70); fill(0); text("Game Over", 70, 350); textSize(50); text("Score :",100,440); text(time,300,440); text("s",340,440); textSize(30); text("Please press 'ENTER'", 100, 500); noLoop(); } } } void keyPressed() { if (keyCode==RIGHT) {//自機を右に移動 X=X+10; } else if (keyCode==LEFT) {//自機を左に移動 X=X-10; } else if (keyCode==ENTER) {//ENTERキーを押してゲーム終了 exit(); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
if文実行時のiの値を確認したりしていないのでしょうか。
回答1件
あなたの回答
tips
プレビュー