条件分岐とループ | 魔王いっぺいのゲームブログ

魔王いっぺいのゲームブログ

ゲームブログの記事に使用する画像はWebで拾ったものがメインで、グラフなどはデータを元に一部自作してます。

擬似スクリプト言語の基本機能がほぼ完成しました。


今回追加したのはifコマンドによる条件分岐と、lpコマンドによるループ処理です。


サンプルはこちら



キーを入力する度にtimeの値を増やして表示していきます。taコマンドはテキスト追加表示、wkコマンドはキー入力待ち。lpコマンドは条件式を引数に渡すことで、判定結果を用いてループから抜けられます。


実行結果がこちら



ifコマンドやlpコマンドの条件式に使える比較演算子は以下です。


a=b (aとbが等しい)

a!=b (aとbが等しくない)

a>b (aがbより大きい)

a<b (aがbより小さい)

a>=b (aがb以上)

a<=b (aがb以下)


スクリプト本体の機能として、「if」から終端コマンドである「-if」にスキップしたり、ループ終端の「-lp」から先頭の「lp」まで戻る処理を実装しました。ここで考慮しなければいけないのは、if文やlp文が入れ子になっていても正しく動作させるということです。正しい移動先を特定する為、コマンド走査の途中に別の「if」や「-lp」を見つけたらその分だけ目的地を遠くする仕組みにしました。


【苦戦したところ】

正規表現の記載順は注意が必要でした。(>|>=)とすると、「>=」より前に「>」が判定され、全て「>」として処理されてしまいました。(>=|>)と記載することで、「>=」も正しく判定されるようになりました。


あと本当はwtコマンドで、〇秒ウェイトをやりたかったのですが、Javascriptでウェイトを実装するのは少し工夫がいるらしく、適切な実装方法を見つけられていません。パッとネットで調べた感じ、setTimeoutとaSync処理が良さげなのですが、まだ上手いことクラスメソッドに組み込めていません。


【次のステップ】

主要な機能は出来てしまったので、実際にスクリプトを使って簡単なゲームを作ってみたいと思います。


スクリプト自体はまだ進化の途中です。とりあえず、テストしやすくする為にコメントやデバッグコンソール用のコマンドも追加したいですね。