130 likes | 250 Views
Java でゲーム. 11074173 山本拓弥. Java とは. オブジェクト指向のプログラミング言語のひとつ。 さまざまなプラットフォームで実行可能なのが特徴。 携帯電話のアプリケーションは、ほとんどこの言語で書かれてある。. Windows. Mac OS. Windows. Mac OS. ○. ×. ○. ○. プログラム. プログラム. 他の言語. Java. ゲームの作成. Java を用いて、シューティングゲームを作成した。 ソースコードは、以下の HP のものを参考にさせていただいた。
E N D
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) { switch (e.getKeyCode()) { • public voidkeyTyped(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も本格的に触れたのは今回が初めてで、大変良い経験ができたと思う。