ゲームプログラミング体験演習 2009.7.7 13:30-14:15 九州産業大学 情報科学部 米元 体験演習の内容 「アクションゲーム」を題材にゲームプログラミングを 体験します。 「ソフトウェア演習Ⅱ(3年前期)」 という講義で実際に利用しているものです。 「高大連携授業」も同様にゲームを題材としたプログ ラミングの講義です(締切間近!)。 「Java」というプログラミング言語を用います。 プログラムの専門知識は不要です!! 設計するゲームの概要 • • • • • • 横スクロールアクションゲーム。 矢印キー(左右)で移動。 スペースキーでジャンプ。 アイテムをすべて集めるとクリア。複数ステージ。 5回敵キャラにあたると終了。 制限時間有。 進行方向 プログラムでどのように 実現するか? 敵 自 敵 プログラムの構成(設計図) • 「クラス」という形で役割分担 • 今回は 「描画クラス」 のみを編集し 最後の仕上げ を行う キャラクタ クラス Character 床 クラス Floor 敵キャラ クラス Enemy 横スクロール背景 クラス SideScrollBG ゲームパラメタ クラス P アイテム クラス Item 描画 クラス Anim2D ■作成手順 ■全体の流れ ①横スクロール背景表示 ⑨床表示 ⑤アイテム表示 ⑦敵キャラの移動・表示 キャラクタの移動・表示 ③④移動+ジャンプ ⑥⑧アイテムゲット?+あたり判定 ②表示 ゲーム情報の表示とゲーム管理 段階的に作っていきましょう 「Anim2Dfrクラス」 のみ追加・編集 ①②~の順で追加 「Anim2Dfrクラス」 を右クリックで実行 1.[背景] スクロール背景を描く // 1. 横スクロール背景描画 bg.draw(g, this); を追加。 スクロール = 見える範囲を移動 2.[キャラクタ] 表示 // 2. 表示 chara.draw(g, this, bg); を追加。 3.[キャラクタ] 移動 // 3. 移動のみ chara.move(false, bg, floor); を追加。 4.[キャラクタ] ジャンプ // 4. 移動+ジャンプ(falseをbuttonに変更) chara.move(button, bg, floor); と変更。 5.[アイテム] 表示 // 5. アイテム描画 for (int i=0; i < item.length; i++) { if (item[i].view(bg)) { item[i].move(); item[i].draw(g, this, bg); } } を追加。 6.[キャラクタ] アイテムをとる // 6. アイテムゲット? chara.checkItem(item); を追加。 7.[敵] 表示 // 7. 敵キャラの移動・表示 for (int i=0; i < enemy.length; i++) { enemy[i].move(bg); // 移動 if ( enemy[i].view(bg) ) enemy[i].draw(g, this, bg); // 表示 } を追加。 4種類の敵キャラを複数配置 8.[キャラクタ] あたり判定 // 8. あたり判定 if ( chara.collision(enemy) ) { chara.resetTime(); mode = 4; } を追加。 9.[動く床] 表示・移動 // 9. 床描画 for (int i=0; i < floor.length; i++) { if (floor[i].view(bg)) { floor[i].move(); // 移動 floor[i].draw(g, this, bg); // 表示 } } を追加。 10.[まとめ] ゲームの構成変更① enemy = new Enemy[4]; // 敵キャラ生成 0, Enemy.E0); P.groundY, 1, Enemy.E1); P.groundY, 2, Enemy.E2); P.groundY, 2, Enemy.E3); enemy[0] = new Enemy(0, 400, P.groundY, enemy[1] = new Enemy(1, 800, enemy[2] = new Enemy(2, 1000, enemy[3] = new Enemy(3, 1000, 編集例(3番目をスピード4、種類E2に変更) enemy[3] = Enemy(3, 1000, P.groundY, 4, Enemy.E2); 10.[まとめ] ゲームの構成変更② floor = new Floor[3]; // 床生成 P.STOP); floor[1] = new Floor(1, 400, P.groundY, P.CW*4, P.UP); floor[2] = new Floor(2, 600, P.groundY, P.CW*4, P.LEFT); 編集例(2番目を少し高い位置、横長の床に変更) floor[2] = floor[0] = new Floor(0, 0, P.groundY, P.CW*4, new Floor(2, 600, P.groundY -P.CH*2 ,P.CW*8, P.LEFT); // 待ち時間[ms]の変更(ゲームのスピード) wait = 20; // [1-60] 完成版の実行方法 // 12. 完成版にするならコメント「//」を前につける // demo(); • おまけ ボスキャラが最後のステージ4で出現します。 残り時間で遊んでみてください。 九州産業大学 情報科学部 ゲームプログラミング体験演習 今回の完成版ゲーム(PC版) http://www.is.kyusan-u.ac.jp/~yonemoto/ においています。帰ってから遊んでください。あるいは http://www.is.kyusan-u.ac.jp/~yonemoto/i/actiongame/Download.html を携帯で打ち込みクリック( iアプリ版) 情報科学部に入って プログラミングを勉強しませんか? Webアンケートお願いします
© Copyright 2024 ExpyDoc