和歌山のプログラミング・システム開発ならシステムキューブ
まいどヾ(´・∀・`) Kです。
前回からの引き続きで、ゲーム作ってます。
今、こんな感じです↓(背景グラフィックは仮のものです;)
ソースコードが一気にふえたので、思い切ってクラスに分けました。
各クラスに以下の機能を実装しました。
(1)【プレイヤークラス】
・移動:アローキーで上下左右に移動
・攻撃:Zキーでキック
・ダッシュ:Zキー押しっぱなしで移動するとBダッシュならぬZダッシュ
・ジャンプ:Xキーでジャンプ
(2)【メッセージウィンドウクラス】
・stringの値を1文字ずつ自動的にフォント用の画像に置換して、
サウンドノベルみたいに、メッセージを1文字ずつ描画します。
(3)【共通関数クラス】
・ゲーム内ロジックに直接関係のない共通メソッドは全部ここにまとめています。
(4)【定数クラス】
・ゲーム内で絶対に不変なやつ、つまり定数値を扱います。
(5)【設定クラス】
・キャラクタのスピードや初期座標なんかを設定します。定数クラスに似てるけど用途が違う。
(6)【ログ出力クラス】
・エラーやトレースログをCSV出力します。
さて、一番難儀だったのは、ダッシュと、ジャンプです。
ダッシュについては、
マリオみたいに徐々に加速して、急ブレーキするとキュキュキュッっと滑る・・・というやつを
実現したくて、かなり、奮闘しました。
ちょっと不満が残っていますが、これについては、とりあえず実現できました。
問題は、ジャンプ。
これも、マリオみたいに放物線を描くジャンプを実現したかったので、奮闘したのですが、
どうにもうまくいかない。ソースコードがボテボテになる・・・。美しいアルゴリズムはないのか・・・
と、ググってみたところ、なんと、お決まりのアルゴリズムというのがありました。
(こちらの方のブログをご覧ください。)
さて、XNA+C#におけるゲームプログラミングで、現状気になった点を書きます。
・ゲームを動作させるパソコン上にXNAランタイムが必要になる
作ったゲームをほかの誰かさんにあげても、そのパソコンにXNAランタイムがないと動かないです。
以下Microsoftサイトからダウンロード、インストールしてもらうと、動くようになります。
http://www.microsoft.com/ja-jp/download/details.aspx?id=15163
(ちなみに上記はXNA 3.1のランタイムです)
これって、最終的にゲームのインストーラーに同梱できるのかなぁ。その辺、まだ調べてない。
他は、特に気になってません。いまのところ。
.NET Framework依存ということから、初回起動時のオーバーヘッドがどの程度のものになるのか、
気になっていたのですが、現状ではまったく気にならないです。
C言語+DXライブラリで作ったアプリよりも軽快に起動している気さえします。