Javaでゲーム 11074173 山本拓弥
Javaとは オブジェクト指向のプログラミング言語のひと つ。 さまざまなプラットフォームで実行可能なのが 特徴。 携帯電話のアプリケーションは、ほとんどこの 言語で書かれてある。 Windows Mac OS Windows Mac OS ○ × ○ ○ プログラム プログラム 他の言語 Java
ゲームの作成 Javaを用いて、シューティングゲームを作成した。 ソースコードは、以下のHPのものを参考にさせ ていただいた。 「 Javaでシューティングゲームを作ろう」 http://ponk.jp/old/java_shoot/index.php
どんなゲームを作るか 目標は、単純でやりやすい ゲームを作成すること。 自分はJava初心者であるから、 複雑なゲームを目指すことは 控えた。 以後、プログラミングを行う 機会があれば、より面白みの あるゲームを作ってみたい。
ゲームの内容 画面の上から落ちてくる敵を、弾を発射して撃 ち落とすゲーム。 敵をひとつ撃ち落とすと、スコアが加算される 。 使用するキーは、Enterキー、方向キー、スペー スキー。
フィールド変数の宣言 コードは、ひとつのクラスにいくつ ものメソッドを用いて作成していっ た。 ちなみに、右はフィールド変数の一 覧である。 参考にしたソースに、プレイヤーが 上下に移動するための変数がなかっ たので、付け加えた。 Image jiki; int jx, jy;//自機座標 int bx,by;//弾座標 int ex, ey; //敵座標 int score=0; int scene; boolean keyLeft; boolean keyRight; boolean keyUp; boolean keyDown; boolean keySpace; boolean bflag; boolean keyEnter; Image bullet;//弾画像 Image teki; //敵画像 Image offImage;//仮想画面 Thread gameThread;//ゲームスレッド
使用したpublicメソッドなど public class Myshoot1 extends Applet implements Runnable, KeyListener { public void init() { public void start(){ Public void stop() { public void run() { public void gameTitle(){ public void gameMain(){ public void gameOver(){ public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { public void keyReleased(KeyEvent e) { public void keyTyped(KeyEvent e) {} public void paint(Graphics g) { public void update(Graphics g) {
自機の上下左右移動 Upキー、Downキーも最初に 宣言し、上下左右に自機を動 かせるようにした。 それによって、自由度が増し た。 しかし、敵の動きが単調なた め、それで面白みが増すこと はあまりなかった。 =自機 =敵
弾の発射 弾のy座標を45ずつ減らすこと で、弾を飛ばすように見せて いる。 参考にしたソースでは10ずつ であったが、スピーディにさ せるために改良した。
弾の発射に関するコード スペースキーを押すと、弾の 発射フラグが立っていなけれ ば、自機中央の座標に弾を設 置。その後弾の発射フラグが 真になる。 弾の発射フラグが真ならば、 弾のy座標を45ずつ減らし、0 未満となったところでフラグ を偽にする。 if (keySpace) { if(!bflag){ bx = jx + 17; by = jy; bflag = true;} } if(bflag){by-=45; if (by < 0){bflag = false;
ゲームオーバー ゲームオーバー画面でエン ターキーを押すと、スコアや 自機の座標を初期化してメイ ン画面に戻すコードを追加し た。 つまり、やり直しである。
反省 自機をさらに自由に動かせるようになったので、 今度は敵の移動パターンを増やし、さらに面白 くしていきたい。 弾の動きにスピード感がでたが、弾の連射をで きるようにして爽快感を出したかった。
Javaに対する理解 今回、初めてゲームのプログラミングを行って、 Javaに関する知識も増え、今までは思いもつか なかった応用の仕方も学ぶことができた。 htmlも本格的に触れたのは今回が初めてで、大 変良い経験ができたと思う。