ソフトウェア演習Ⅱ(3年前期)

ゲームプログラミング体験演習
2008年5月9日金
情報科学部 米元 聡(准教授)
体験演習の内容
• 「シューティングゲーム」を題材に
ゲームプログラミングを体験します。
• 「ソフトウェア演習Ⅱ(3年前期)」
という講義で実際に利用しているものです。
• 「高大連携授業」にもほぼ同じ内容のものが
あります
• 「Java」というプログラミング言語を用います。
ゲームの概要
• 縦スクロールシューティング。
• マウス(キー)で自機を操作。
• 弾を発射
– 空中用(左クリック)
– 地上用(右クリック)
• 敵は地上用と空中用に分かれます。
横座標が重なると撃ってきます。
手順
処理全体の流れをつかもう
ステップ①: 背景に絵を追加しよう
ステップ②: 縦スクロールの機能をつけよう
ステップ③: 敵を追加してみよう
ステップ④: 敵の数や種類を変えよう
ステップ⑤: 無敵なのであたり判定を導入しよう
ステップ⑥: 自機を好きな絵に変更しよう
ステップ⑦: ボス戦を追加しよう
最初の状態
• 背景なし
• 自機をマウス(キー)で操作
• 左右クリックで弾を発射
• 「Anim2Dfrクラス」を
右クリックし実行してください。
処理全体の流れをつかもう
ゲーム、アニメーションでは1秒あたり数十回も画像を
生成・表示することで動いているようにみせます。
パラパラ漫画と同じ原理です。
このシューティングゲームでは
//
//
//
//
背景表示
敵キャラの移動・表示
自機の移動・あたり判定・表示
スコア・ライフの表示
を何度も繰り返します。
1コマにつき少しずつキャラクタが動いてきます。
ステップ①: 背景に絵を追加しよう
// ①追加// 背景描画
bg.draw(g, this);
を追加
ステップ②: 縦スクロールの機能を
つけよう
// ②追加// 縦スクロール背景更新
if (bg.getPos() < GP.H * (GP.N-1) ) bg.nextPos();
を追加
ステップ③: 敵を追加してみよう
// ③追加// 敵キャラの移動・表示
for (int i=0; i < enemy.length; i++) {
enemy[i].move();
// 移動
enemy[i].lockOn(chara.x, chara.y); // 発射した?
enemy[i].draw(g, this);
// 表示
}
を追加
ステップ④: 敵の数や種類を変えよう
敵の追加(好きな個数で1つ以上)
– 敵の種類: 最大4種類まで(地上2・空中2)
– 敵の数:
好きなように設定
0,1,2,3,0,1,2,3,...の順で種類が決定される
(GPクラス内)
public static final int EN = 12; // 敵キャラの総数12
public static final int ET = 4; // 敵キャラの種類数4
地上
0
空中
1
2
3
ステップ⑤: 無敵なのであたり判定
を導入しよう
// ⑤追加// あたり判定
chara.collision(enemy);
を追加
// あたり判定
ステップ⑥: 自機を好きな絵に変更
しよう
// ⑥追加// 自機画像の変更
(GPクラス内)
public static final String JIKI = "img/jiki0.png"; // 自機画像
「jiki0」 を 「jiki1」 か 「jiki2」 に変更可能
合計3種類あるので好きな絵に変えてみよう。
ステップ⑦:ボス戦を追加しよう
• // 【⑦追加】// ボス戦モード
• ※以下のコメント「//」をはずす
if (mode==1 && bg.getPos() > GP.H * (GP.N-2) )
mode = 2; // ボス戦モード
完成
お疲れ様でした
キャラクタデザイン
嶋村君(米元研究室)
情報科学部で
プログラミングを学びませんか?
(高大連携授業もあります)
• webアンケートお願いします。