ゲームに簡単なプログラムを組み込むためにスクリプト言語とそれを実行するインタープリタをC++で作ってしまおうというコーナーです。
要件
最低限必要
- 変数宣言不要(短いスクリプトが多いため入力の手間を省く)
- 擬似マルチタスク?(説明が難しいわ)
- スクリプトの一行目から実行開始(main関数などがいらない)
- 関数を自作できる
- if文、goto文
- double型、string型に相当する型を使う
- 型宣言なし(使い方により内部的に変化)
- 加減乗除、文字列連結
- 組み込み関数はスクリプト解釈側で自由に作成できる
- 変数はグローバル変数のみ
- コメント生成可能
- 一つの命令を複数行にまたがって書ける
- 一次元配列への対応
必須じゃないけど欲しい
- 改行も文の終わりに使うことができる(セミコロンを省略可能)
- 文字列中の変数名の展開
- 配列の配列
別にいらない
- 速い実行速度
- 少ないメモリでの動作
- 多次元配列
- 無茶な省略表現
なお、特別理由がなければ、PerlかPHPあたりに似せて作るつもりです。
簡単なサンプル
# 例えば、イベントとか msg("ハローワールド!\nこんにちは世界である!!"); &eee(select("それがどうした", "なるほど", "げこげこ")); sub eee { talk("みふみん", "あなたは".$_[0]."とおっしゃるのですね。"); if ($_[0] eq "げこげこ") { for ($i=0; $i<10; $i++) { $p = $i*($p+1); msg($_[0].$p); } } }
このサンプルは、
msg命令により「ハローワールド!
こんにちは世界である!!」と会話ではないメッセージが表示され、
次にselect命令により「それがどうした」「なるほど」「げこげこ」の3つから選択するウィンドウが現れ、
選択するとサブプロシージャeeeを呼び出し、
サブプロシージャeeeにて、
「みふみん」の会話として「あなたは○○とおっしゃるのですね。」が表示され(○○は選ばれた選択肢)、
選択肢として「げこげこ」が選ばれた場合、
変数$pを計算して、
選ばれた選択肢と共に表示することを、
10回繰り返し、
サブプロシージャから復帰し、
続く命令がないのでイベントが終了する。
06/08/13 | 要件を書き直した |
06/07/11 | 書いてみた |