150 likes | 259 Views
ゲームプログラミング体験演習. 2008年5月9日金 情報科学部 米元 聡(准教授). 体験演習の内容. 「シューティングゲーム」を題材に ゲームプログラミングを体験します。 「ソフトウェア演習 Ⅱ (3年前期)」 という講義で実際に利用しているものです。 「高大連携授業」にもほぼ同じ内容のものが あります 「 Java 」というプログラミング言語を用います。. ゲームの概要. 縦スクロールシューティング。 マウス(キー)で自機を操作。 弾を発射 空中用(左クリック) 地上用(右クリック) 敵は地上用と空中用に分かれます。 横座標が重なると撃ってきます。.
E N D
ゲームプログラミング体験演習 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); // 表示 }
地上 空中 0 1 2 3 ステップ④: 敵の数や種類を変えよう 敵の追加(好きな個数で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
ステップ⑤: 無敵なのであたり判定を導入しようステップ⑤: 無敵なのであたり判定を導入しよう // ⑤追加// あたり判定 を追加 chara.collision(enemy); // あたり判定
ステップ⑥: 自機を好きな絵に変更しよう // ⑥追加// 自機画像の変更 「jiki0」 を 「jiki1」 か 「jiki2」 に変更可能 合計3種類あるので好きな絵に変えてみよう。 (GPクラス内) public static final String JIKI = "img/jiki0.png"; // 自機画像
ステップ⑦:ボス戦を追加しよう • // 【⑦追加】// ボス戦モード • ※以下のコメント「//」をはずす if (mode==1 && bg.getPos() > GP.H * (GP.N-2) ) mode = 2; // ボス戦モード
完成 お疲れ様でした キャラクタデザイン 嶋村君(米元研究室) 情報科学部でプログラミングを学びませんか? (高大連携授業もあります)