テーマはアクションゲームです。 下記の要領で段階的にプログラムを作成していきます。 演習時間: 50分。「ソフトウェア演習U(3年前期)」という講義の内容より javaによるゲーム/アニメーションプログラミング
遊び方
左右カーソルキーで操作。 スペースキーでジャンプ。 [s]キーで再スタート。 すべてのアイテム(★)を集めるとクリア。 5人失敗するとゲームオーバー。
Eclipseを使う
■(先生の)前準備 Eclipseを起動し、新規「プロジェクト」を作成します。名前はたとえば「gp」。 「action_game_prog_enshu.zip」をダウンロードし、フォルダを解凍します。場所はデスクトップでかまいません。 eclipseのパッケージエクスプローラ上の「gp」に対し、 「action_game_prog_enshu」フォルダの中身をコピーします。 ■翻訳・実行 パッケージエクスプローラ上の「Anim2Dfr」にマウスをあわせて右クリックで 「実行」「javaアプリケーションの実行」とすれば、ウインドウがあがり、ゲームを実行できます。 この後は、プログラムを編集し、同様の実行を行えば変更の加わったプログラムが起動します。作成方法
Anim2Dクラス にのみ追加・編集していきます。 枠内の命令をコピーし、eclipseの該当箇所に貼り付けて下さい。処理全体の流れをつかもう
通常ゲーム、アニメーションでは1秒あたり数十回も画像を生成・表示することで動いているようにみせます。 パラパラ漫画の要領です。 このアクションゲームでは
@横スクロール背景表示 H床表示 Dアイテム表示 F敵キャラの移動・表示 キャラクタの移動・表示 BC移動+ジャンプ EGアイテムゲット?+あたり判定 A表示 ゲーム情報の表示とゲーム管理 |
bg.draw(g, this); |
chara.draw(g, this, bg); |
chara.move(false, bg, floor); |
chara.move(button, bg, floor); |
for (int i=0; i < item.length; i++) { if (item[i].view(bg)) { item[i].move(); item[i].draw(g, this, bg); } } |
chara.checkItem(item); |
for (int i=0; i < enemy.length; i++) { enemy[i].move(bg); // 移動 if ( enemy[i].view(bg) ) enemy[i].draw(g, this, bg); // 表示 } |
if ( chara.collision(enemy) ) init(); |
for (int i=0; i < floor.length; i++) { if (floor[i].view(bg)) { floor[i].move(); // 移動 floor[i].draw(g, this, bg); // 表示 } } |
enemy = new Enemy[4]; // 敵キャラ生成: (id, x, y, w, st, type) enemy[0] = new Enemy(0, 400, GP.groundY, 0, Enemy.E0); enemy[1] = new Enemy(1, 800, GP.groundY, 1, Enemy.E1); enemy[2] = new Enemy(2, 1000, GP.groundY, 2, Enemy.E2); enemy[3] = new Enemy(3, 1000, GP.groundY, 2, Enemy.E3); |
floor = new Floor[3]; // 床生成: (id, x, y, w, type) floor[0] = new Floor(0, 0, GP.groundY, GP.CW*4, GP.STOP); floor[1] = new Floor(1, 400, GP.groundY-GP.CH*1, GP.CW*4, GP.UP); floor[2] = new Floor(2, 600, GP.groundY-GP.CH*1, GP.CW*4, GP.LEFT); |
// init_test(); |
・敵の種類の追加。さまざまな動きの定義が考えられます。 ・アイテムの追加。とると攻撃が可能、等。 ・ステージの追加 ・エンディングの追加 ・サウンド追加・・・グラフィックスの講義なのであえて音は鳴らしませんでした。
今回題材がたまたまゲームでしたが、情報科学部ではゲーム性や芸術性の高いも のを作ることを目的としません。 情報科学部では「情報の表現方法」、「アルゴリズム」や「データ構造」という プログラムを作成するための基礎をゲームプログラミングを通して勉強していきます。