以前 C#でドラゴンクエストのようなRPGをつくりましたが、今回はJavaScriptでつくります。

HTML部分

HTML部分をさきに示します。JavaScriptでcanvasに描画するのですが、ボタンは絶対配置にします。スマホでも遊べるようにボタンで操作できるようにします。シューティングゲームのようなものはスマホには向きませんが、RPGならスマホでも遊べるはずなので対応させます。表示サイズは320×480ピクセル固定です。

CSS部分

ボタンを適切な位置に表示させます。

style.css

JavaScript部分

JavaScript部分を示します。以下は主なグローバル変数です。他にもありますが、その都度示します。

app.js

マップをつくる

マップの元になる文字列を用意しておき、それを利用して山や草原などを描画します。画像は以下を用います。
(圧縮)

~は海、Mと・は山、全角スペースは草原、橋は橋、城は自分の城、魔は魔王がいる城です。

app.js

城のなかにいるときの描画に使います。床は床、壁は城壁、階は階段です。

BaseMapクラスの定義

これらの描画やこのなかにいるプレイヤーの座標などはクラスを使っておこないます。フィールドはMapFieldクラス、自分の城はMyCastleクラス、魔王がいる城はEnemyCastleクラスにしますが、これらの基底クラスであるBaseMapクラスを先に示します。

コンストラクタを示します。

プレイヤーが移動するときにおこなわれる処理を示します。CanMove関数でその方向に移動することができるかどうか調べて、移動できるときだけ移動処理をおこなっています。

CanMove関数は移動できるかどうかを調べてtrueまたはfalseを返します。移動できるのは移動先が床、階段、草原、橋のときだけです(橋は左右にしか移動できないので引数が’up’と’down’のときは調べていない)。

Draw関数は描画処理をおこないます。メッセージが存在するときはこれを表示します。

山と橋、城はサイズが他のイメージと違ううえにその下に描画しなければならないものがあるので最後に描画します。

最後にShowMoveButtons関数、ShowBattleButtons関数、DrawHPMP関数を呼び出していますが、前二者は移動用のボタン、戦闘時のコマンド選択用のボタンを表示させたりさせないためのものです。DrawHPMP関数は画面の右上にプレイヤーのHPとMPを表示させるためのものです。

ShowMoveButtons関数、ShowBattleButtons関数、DrawHPMP関数を示します。これらはメンバ関数ではありません。

続きは次回。