引用テキスト### 前提・実現したいこと
Javaでシューティングゲームを作成しています。
マウスをクリックすると弾が発射されます。
敵のうち、一体だけは弾が3発当たらないと倒せなくなっています。
弾を5発ずつ発射できるようにしたいのですが、1発しか表示されません。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
java
ソースコード (中略) // 自機の弾の初期設定 m=5; k=0; jiki_tama_x=new int[m]; jiki_tama_y=new int[m]; jiki_tama_flg=new int[m]; for(int j=0;j<m;j++){ jiki_tama_x[j] = jiki_tama_y[j] = -100; jiki_tama_flg[j] = 0; } (中略) /* MouseListener に関連するメソッド */ public void mouseClicked(MouseEvent e) {//マウスがクリックされたら自機の弾をチェック if (jiki_tama_flg[k]==0) { jiki_tama_x[k] = jiki_x + jiki_w/2; jiki_tama_y[k] = 400; jiki_tama_flg[k] = 1; } } (中略) /* ActionListener に関連するメソッド */ public void actionPerformed(ActionEvent e) { Dimension d = getSize(); if (e.getSource()==timer) { // 敵機を水平方向に動かす for (int i=0; i<n; i++) { teki_x[i] += teki_u[i]; if (teki_x[i]<0 || teki_x[i]>(d.width-teki_w)) teki_u[i] = -teki_u[i]; } // 自機の弾を動かす if (jiki_tama_flg[k]==1) { jiki_tama_y[k] -= 10; for(int i=0;i<(n-1);i++){//全ての敵機(1回で倒せる)について判定していく if(teki_alive[i]==1&& teki_x[i]<jiki_tama_x[k]&&teki_x[i]+teki_w>jiki_tama_x[k]&& teki_y[i]<jiki_tama_y[k]&&teki_y[i]+teki_h>jiki_tama_y[k]){ teki_alive[i]=0;//敵の生存状態を破壊(0)にする jiki_tama_flg[k] = 0;//次の弾が打てるように待機中(0)にする } } //3回で倒す敵の判定 if(teki_alive[12]==3||teki_alive[12]==2||teki_alive[12]==1&& teki_x[12]<jiki_tama_x[k]&&teki_x[12]+teki_w>jiki_tama_x[k]&& teki_y[12]<jiki_tama_y[k]&&teki_y[12]+teki_h>jiki_tama_y[k]){ teki_alive[12]-=1;//敵の生存状態を一つ減らす jiki_tama_flg[k] = 0;//次の弾が打てるように待機中(0)にする } k+=1; if(k>=5){ k=0; } if (jiki_tama_y[k]<0) jiki_tama_flg[k] = 0; } (中略) } /* 画面描画に関連するメソッド */ public void paintComponent(Graphics g) { super.paintComponent(g); (中略) // 自機の弾の描画 if (jiki_tama_flg[k]==1) { g.setColor(Color.yellow); g.fillOval(jiki_tama_x[k], jiki_tama_y[k], 5, 10); } (中略) } } }
試したこと
弾の描画の部分を
for(int l=0;l<m;l++){
g.setColor(Color.yellow);
g.fillOval(jiki_tama_x[l], jiki_tama_y[l], 5, 10);
}
としてみましたがうまく出来ませんでした。
複数の弾を描画する方法について教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
まだ回答がついていません
会員登録して回答してみよう