フレームワークサンプルも完成

後はドキュメントだなー。バージョンは1.10にします。小数点以下第1位を機能追加、第2位をバグフィックスにする予定。


いかにシンプルに概念を理解してもらうかというのを一番に考えてるんで無駄なところはたくさんあります。値を渡しやすいようにとかそんなレベルで。それでも慣れるまでは結構面倒だなと思われるでしょう。



このサンプルの動きを列挙します。

  • タイトルらしきものがまず表示されます。ボタンを押すとそこからゲーム本編へ切り替わりBGMが流れます。
  • そこで自機を8方向に動かして弾を発射可能です。発射時に効果音もちゃんとでます。
  • 敵と自分の弾があたればもちろん音とともに爆発が起きて敵と自分の弾が消え、スコアが上昇。音は発射音とチャンネルが違うので発射のせいで音が消えることはありません。
  • 敵の発射する弾と自機があたれば自機は爆発し、ゲームオーバーです。音楽がフェードアウトしていきながら、しばらくゲームオーバーのメッセージが流れ(よくあるSTGのようにその背後では敵や背景は動き続けています)、その後タイトルに戻ります。
  • どの画面であってもESCを押すことによってゲームを終了させることが可能です。
  • 敵は自機との距離が近いと弾を吐きません。
  • スコアが上がると敵の弾の発射間隔が短くなり難易度が上昇します。

一応ソースには何をしているかの1行コメントは多めにのせているので流れをつかめば理解はすぐかなと甘い考えだったり。



上記のようにゲームに基本となるものはほぼそろっているはずなので、Java言語がわかっていればこれを改造していけば、WindowsLinuxMacクロスプラットフォームなオリジナルの縦スクロールSTGくらいは余裕で作れるようになると思います。

見てわかるように敵と自機の当たり判定はありませんので、まずは練習がてらこれを実装するとよいでしょう。ハイスコアを実装するのもよいですね。自機の弾も複数発射できるようにしてみましょう。横スクロールにしてもよいですね。

ここで思いつきましたが手軽なファイルの読み書き用のユーティリティクラスはあってもいいかもしれませんね。ハイスコアの保存とかリプレイの保存とか、各種データの読み書きとか必要なことは多いですし。