Java 2D多関節デカキャラフレームワーク

Javaで昔の2Dゲームであるようなデカキャラの多関節ボスとか、砲台がぐるぐるとかに利用できそうなフレームワークを作ってみた。とあるソフトを評価するためのシミュレーターを作りたいのと思ったついでだったりする。
UMLを描いているのはEclipseプラグインのAmaterasです。
JavaCompositeDraw.png
今は、動きませんが、最終はこのガドリング砲台がぐるぐる回りながら弾を撃ちまくる感じです。
四角い土台の上に子部品としての大きな丸が載っていて、その丸の上にさらに子部品として小さな丸の砲台が乗ってます。大きな丸が回転すると、それに載っている小さな丸もついて行って、さらに小さな丸も回転する感じです。
こういうんで、昔懐かしの多関節ロボットのボスキャラや、戦艦の砲台とかができる予定です。
PaintObject.gif
基本のフレームワークはこんな感じ。PaintObjectがフレームワークで、基本はデザインパターンのコンポジットパターンのような感じですが、コンポジット自体も自身を描画するので、IFとリーフとコンポジットが1つになった感じです。PaintObjectを継承し、Stationクラスのように各部品クラスを作り、自身を原点位置(0,0)、0度での姿を描画するPaintOnOrigin()クラスをオーバーライドして、それと、それが持つ子部品をそのクラスのコンストラクタなどで座標と角度を指定して生成することで実装します。それらをつなぎ合わせていくことで、階層的な部品関係のキャラクターの描画ができます。
JavaCompositeClassDiagram.png
最初のガドリング弐連装絵を描いているクラス図がこんな感じ。
JavaのGraphics2DとAffineTransformを使って実装しています。AffineTransformですが、ゲーム作るのにかなり便利なクラスです。親子でアフィン変換を重ね合わせていく感じです。

コメントを残す