弾発射・はみ出しチェック - Javaでシューティングゲームを作ろう
目次
- Javaでシューティングゲームを作ろう
- 自機の左右移動
- 弾発射・はみ出しチェック
- 敵登場・仮想画面
- 当たり判定(敵と弾)・スコア
- 当たり判定(自機と敵)・シーン切り替え
- クラス化
- 継承・Vectorによるキャラ管理・サウンド
- パワーアップ・複数種類の敵
- ペンギンシューティング
今回の題材
- 弾発射
- 自機が画面からはみ出さないようにする。
一式ダウンロード
ソースの解説
Shooting2クラス フィールド
Image tama;
int tx, ty;
boolean tflag;
tamaは弾の画像が入るImageオブジェクトです。tx,tyは弾の座標です。弾は常に画面に現れているわけではないので、tflagというフラグ変数を持って弾が画面上に現れているか管理しています。falseのときは画面上になく、trueのときは画面上にあるというわけです。
boolean keyLeft, keyRight, keySpace;
弾発射用のスペースキーが押されたか管理するための変数keySpaceを追加しています。Shooting2クラス initメソッド
tflag = false;
初期状態では画面上に弾は出ていないので弾フラグをクリアしています。Shooting2クラス runメソッド
if (jx < 0) jx = 0;
自機が画面左にはみ出さないための処理を行っています。
if (jx > 300 - 32) jx = 300 - 32;
自機が画面右にはみ出さないための処理を行っています。
if (keySpace) {
if (!tflag) {
tx = jx + 12;
ty = jy;
tflag = true;
}
}
弾発射を行っている部分です。スペースキーが押されて、なおかつ画面上に弾がなければ(!tflag)、弾のx座標を自機のx座標+12(自機の中央から弾が出る)、弾のy座標を自機のy座標と同じ場所に設定し、弾フラグをセットしています。
if (tflag) {
if (ty < 0) tflag = false;
else ty -= 8;
}
弾が画面の上部まで達したら消える処理を行っている部分です。弾が現在画面上にあるとき、弾のy座標が画面の最上部に達したら弾フラグをクリアしています。そうでなければ弾を画面上部に向かって8ドット進めます。Shooting2クラス paintメソッド
if (tflag) g.drawImage(tama, tx, ty, this);
自機と同じように弾を描画していますが、弾フラグがセットされている(弾が画面上に存在している)ときのみ弾を描画します。