/*! * Meatwo's Common Adventure Game v1.01 * * Copyright (c) 2021 Meatwo * * Released under the MIT license. * See https://opensource.org/licenses/MIT */ /* いろいろ参考にさせていただきました。ありがとうございます ●概要   サウンドノベル、というよりは、   大昔にあったゲームブックっぽいものを目指しました   それが自作できるツールっぽいものです ●(適当な)サンプルをやってみる   ファイル読み込みをキャンセルで、サンプルが読み込まれます   ※ちなみにサンプルは、ソース最下部にあります   自作のファイルがある場合、キャンセルせずに、それを読み込んでください。      サンプルに終わりはありません。適当に終了させてください。 ●全体の流れ   文章の文字を一文字ずつ処理します   処理する順番は「上から下」「左から右」です。   その際に「命令」があれば、その命令を実行します。   「分岐」する命令の場合、     真ならば、命令以降の「行の残り文字列」を処理して、次の行に行きます。     偽ならば、命令以降の「行の残り文字列」を処理せずに、次の行に行きます。   選択肢を選んだり、戦闘をしたりして、話を進めていきます。      選択肢がなくなり強制ジャンプもしなければ、   そこで終わりです。 ●命令について   文章の中に簡単な「命令」を入れることで、   文章の流れを制御できます。   詳しくは以下参照 ●自分のステータス(「ショートカット」F8で表示されます)   HP 現在の体力   最大HP 体力の最大値   AT 攻撃力   初期AT 初期の攻撃力   アイテム 現在のアイテム   初期アイテム 最初に持っているアイテム   所持金 現在の所持金   初期所持金 最初に持っている所持金 ●環境設定   表示速度 文字を描写する速度   表示書体 表示する文字書体   表示文字色 基本の文字色   選択色 選択肢の文字色   BG色 背景色   画像変更方法 背景画像を切り替えるときの演出(0-2)   簡易一時停止 「。」または「.」の連続で、「一時停止」を付加するかどうか    (=0)で無効。(=1)で有効    デフォルトは(=1)   隠しアイテム表示 隠しアイテム(アイテムの先頭に「-」が付いたもの)をステータス表示するかどうか    (=0)でステータス表示しない。(=1)でステータス表示する。    デフォルトは(=0)   直前命令保持 直前に処理した「命令」を保持するかどうか    (=0)で保持しない。(=1)で保持する    デフォルトは(=0)   簡易入力 HP関連の命令を簡易入力できるようにする    (=0)で無効。(=1)で有効    デフォルトは(=0)   ツリー表示 ツリー表示を許可するかどうか    (=0)で無効。(=1)で有効    デフォルトは(=0) ●ツリー表示(「ツリー表示=1」にする必要あり。ショートカットF9で表示)   ラベルとそのジャンプ先を「ツリー」で一覧表示します(簡易的なものです)   注意     一覧表示されるツリーは、       ラベル「001」から「ジャンプ先を辿れる」ものだけです。       (辿れないものは「孤立しているラベル」として、別に一覧表示されます)     ノードの最後に「*」が付いているものは、       既に他の場所で表示済みです     ノードの最後に「**」が付いているものは、       ジャンプ先がない(つまり、終わり)か       ラベルそのものが存在しない(つまり、エラー)のどちらかです   参考     孤立しているラベル       「ラベルは存在している」が「001」から辿れない     存在しないラベル       文章中でジャンプ先に指定されているが、「存在しないラベル」 ★命令について   <囲み命令>   ◎アイテム名◎ アイテム名を「初期アイテム」に追加   ●アイテム名● アイテム名を「アイテム」に追加   ○アイテム名○ アイテム名を「アイテム」から削除(持っていれば)   ●● アイテム名を文字入力して、「アイテム」に追加   ○○ 最後に得たアイテムを削除(ラベル内限定)   ?アイテム名? アイテム名を持っていれば、以下描写(一行のみ)   ^アイテム名^ アイテム名を持ってなければ、以下描写(一行のみ)      *ラベル ラベル定義(*と改行で囲んでいる)   [文字列]<ラベル> 文字列を選択肢にして、ラベルへジャンプ   (ラベル) ラベルに強制ジャンプ(選択肢ジャンプが既に表示済なら、キャンセルされる)   ★ラベル名★ ラベル名を「ラベル履歴」で検索。存在すれば、以降処理(一行のみ)   ☆ラベル名☆ ラベル名を「ラベル履歴」で検索。存在なし、で以降処理(一行のみ)      {式} 式をナデシコする   $条件式$ 条件式が真ならば、以下描写(一行のみ)      !正解! 文字入力。それが正解と一致すれば、以下描写(一行のみ)      /敵のステータス/ 敵のステータス 例)「ゴブリン 攻撃20体力10」。勝てば以下描写      |画像ファイル名| 背景を画像ファイル名に変更。ファイル名のみで可。      <単独命令>   # 以降コメント処理(一行のみ)   \ 右隣の文字の特殊機能を消す(命令文字を地の文で使いたい時に)   _(アンダーバー) 文字描画を一時停止させる   @(半角) 直前命令保持=1のとき、直前の命令を保持する(ラベル内限定)   @(全角) 直前命令保持=1のとき、@(半角)で保持した命令を使用する(ラベル内限定)   %(半角) 直前命令保持=1のとき、直前の命令を保持する(ラベル内限定)   %(全角)  直前命令保持=1のとき、%(半角)で保持した命令を使用する(ラベル内限定)      <例外命令>   その1   (簡易一時停止=1の場合。デフォルトで1)   「。」句点の連続(2個以上)→「。_」句点1個+アンダーバー   「.」ドットの連続(2個以上)→「._」ドット1個+アンダーバー   と同様の動作をします      その2   (簡易入力=1の場合。デフォルトで0)   「=」(全角の=。命令取得中ではない場合)     「$HP=0$」と同様の動作。   「>」(全角の>。命令取得中ではない場合)     「$HP>0$」と同様の動作   「--半角数字」(半角マイナスを2つ&半角数列。命令取得中ではない場合)     「{HP=HP-半角数字}」と同様の動作   「++半角数字」(半角プラスを2つ&半角数列。命令取得中ではない場合)     「{HP=HP+半角数字}」と同様の動作    ★命令の詳しい説明   アイテム増減関連の命令「●」「○」「◎」   直前命令保持の命令「@」「%」(半角の「@」「%」も使用しているので注意)   簡易入力の命令「=」「>」   ラベル履歴関連の命令「★」「☆」以外は、   すべて「半角」です。      ラベル     *ラベル ジャンプ用のラベルを定義します     ラベルの後は、改行してください          例)     *001 ラベル名は「001」          ※注意     ラベル名は、特に数列である必要はありません     *start とか*end とかでもOK     しかし「*001」は必ず作ってください。(仕様です)          ※注意2     ラベルの重複はできません。      ラベル履歴     一度でも画面上に表示された「ラベル」は、     「ラベル履歴」(配列)に追加されます。     その「ラベル履歴」内を検索する機能です。          ★ラベル名★ ラベル名を「ラベル履歴」で検索して、存在すれば、以降処理(一行)     ☆ラベル名☆ ラベル名を「ラベル履歴」で検索して、存在しなければ、以降処理(一行)      ラベルへ直接ジャンプ     (ラベル) ラベルを「半角カッコ」で囲む          文字描画が止まり、「□」が点滅します。     画面クリックで、ラベルに自動でジャンプします          ※注意1     ラベルジャンプの前に「選択肢」が表示されていると、     自動ジャンプはキャンセルされます          ※注意2     ラベルジャンプすると、それ以降の処理はしません。     (その場で次のラベルにジャンプしてしまうので)        選択肢     [文字列]<ラベル> 文字列を選択肢にして、ラベルにジャンプ     例)[■買い物へいく]<002>     「■買い物に行く」が選択肢。     「002」のラベルへジャンプする           一時停止     「_」 アンダーバー     文字描画が一時的に止まります(「▽」が点滅します)     画面クリックで、一時停止解除          ※注意(特殊動作)     「簡易一時停止=1」の場合、     「。」句点の連続(2個以上)で「。_」(句点1個+アンダーバー)、     「.」ドットの連続(2個以上)で「._」(ドット1個+アンダーバー)     の動作をします。回避したいときは、     「\」でエスケープするか     「簡易一時停止=0」にしてください。      HP、ATなど     {文字列} 文字列をナデシコする。     例){HP=HP+1} HPに1を足す          $条件式$ 条件式が真ならば、以降表示。     例)$HP>0$ HPが正ならば、以降表示          ※注意     簡易入力=1にすると、HP関連の命令を簡単な記号で入力できます。     以下「簡易入力」を参照        アイテム     ◎アイテム◎ 「初期アイテム」にアイテムを追加     ●アイテム● アイテム追加     ○アイテム○ アイテム削除     ?アイテム? アイテムを持っていれば、以降表示     ^アイテム^ アイテムを持ってなければ、以降表示     ●● アイテム入力。●の間にアイテム名を入れないと文字入力になり、それがアイテムに追加されます     ○○ (○○の間に文字を入れない)ラベル内限定で、最後に得たアイテムを削除               ※注意     アイテム名の先頭に「-」(半角のマイナス)が付いていると     「ステータス表示」のときに、そのアイテムが表示されません     (表示させるには、「隠しアイテム表示=1」にする必要があります)          ただし、表示されないだけでアイテムの中に存在しています。     (アイテム名は、「-」も含めてアイテム名)          例)●-鍵● 「-鍵」をアイテムに追加          ※注意2     アイテム入力では、アイテム名の先頭に「-」は付けられません。     アイテム入力では、既に持っているアイテムを持てません。          ※注意3     「○○」命令において、ラベルをまたいで得たアイテムを削除はできません     例えば、ラベル「XXX」の中で最後に得たアイテムは、次のラベルに移行した時点で、クリアされます。     あくまでも、「XXX」内限定で、「最後に得たアイテム」を削除する命令です         質問     !正解! 文字入力。正解と一致すれば、以降処理     例)!1234!大当たり〜      文字入力が「1234」で「大当たり〜」が表示されます      戦闘     /敵名前 攻撃10体力10/(例:敵のステータスは、←のように表記する)     戦闘に勝利すれば、以降処理     勝った時と負けた時で、分岐させて表示する      画像     |画像ファイル名| フルパスでなく、ファイル名のみでOK     画像ファイルは、「母艦パス\背景」フォルダ内に入れること     背景の画像を、ファイルの画像に変更する         命令記号を文中で使いたい場合     「\」でエスケープすることで、命令の機能を消すことができます     「\」の機能を消したい場合、「\\」として下さい          ラベル記号「*」は、エスケープ不可です      コメント     「#」(半角シャープ)          #以降の文字列はコメント処理されます。(有効範囲は一行)          ※注意     以下の場合、コメント処理されません。     1.命令内容を取得中(例えば、●と●の間)の「#」     2.エスケープした場合(\#)も、普通の文字として処理されます。      直前命令(直前命令保持=1で、有効)     「@」半角の@ 直前命令を記憶する     「@」全角の@ 「@」で記憶した命令を使用する     「%」半角の% 直前命令を記憶する     「%」全角の% 「%」で記憶した命令を使用する          半角@(半角%)で、直前に処理した「囲み命令」を保持し(ラベル内限定で)     全角@(全角%)で、保持した命令を使用できます     (「*」や「<>」などの命令は除きます)          「@と@」「%と%」は対になっています。     @で記憶した命令は@、%で記憶した命令は%で使用できます。          これらの文字を、命令機能を無くして使用したいときは、     「直前命令保持=0」にするか、「\」でエスケープしてください          例)     $HP>0$あいうえお     $HP>0$かきくけこ     $HP>0$さしすせそ          を「直前命令保持=1」にすると、          $HP>0$     @     @あいうえお     @かきくけこ     @さしすせそ          と書くことができます          ※注意1     ラベルをジャンプすると、記憶した命令はクリアされます。          ※注意2     半角@で命令を記憶しなかった(できなかった)場合、全角@はそのまま「@」を表示します     半角%も同様です。          ※注意3     簡易入力=1の場合、     「=」「>」「++半角数字」なども「@」(「%」)で直前命令を記憶できます      簡易入力     簡易入力=1の場合、以下の記号が使えます     「=」(全角) 「$HP=0$」と同様の動作をします     「>」(全角) 「$HP>0$」と同様の動作をします     「--半角数字」 「{HP=HP-半角数字}」と同様の動作をします     「++半角数字」 「{HP=HP+半角数字}」と同様の動作をします          例)     {HP=HP-100}     $HP=0$あなたは死にました     $HP>0$あなたは生きてます     $HP>0$よかったですね          を「簡易入力=1」で書くと          --100     =あなたは死にました     >あなたは生きてます     >よかったですね          となります      その他     「-アイテム名」(半角マイナス一つ&アイテム名)          アイテム名の先頭に「-」が付いていると、     「ステータス表示」のときに、そのアイテムは基本非表示になります。     「ステータス表示」で表示させたいときは、     「隠しアイテム表示=1」にして下さい。     ※「アイテム」の項目を参照      */ ※ここから ダイアログ数値変換=0 母艦→スタイル=「ダイアログスタイル」 設定とはハッシュ=「」をハッシュ変換 設定@「表示速度」=0.02 設定@「選択色」=黄色 設定@「表示文字色」=白色 設定@「画像変更方法」=1 設定@「簡易一時停止」=1 設定@「隠しアイテム表示」=0 設定@「BG色」=16384 設定@「表示書体」=「MS ゴシック|12|太字」 設定@「直前命令保持」=0 設定@「簡易入力」=0 設定@「ツリー表示」=0#ツリー解析表示を許可するか *表示速度設定(V)   設定@「表示速度」=(Vを実数変換)の絶対値 *表示速度取得   それは、設定@「表示速度」 *選択色設定(V)   Vを整数変換   もし、それ<0ならば、それ=0   違えばもし、それ>$FFFFFFならば、それ=$FFFFFF   設定@「選択色」=それ *選択色取得   それは、設定@「選択色」 *表示文字色設定(V)   Vを整数変換   もし、それ<0ならば、それ=0   違えばもし、それ>$FFFFFFならば、それ=$FFFFFF   設定@「表示文字色」=それ *表示文字色取得   それは、設定@「表示文字色」 *画像変更方法設定(V)   Vを整数変換   もし、それ<0ならば、それ=0   違えばもし、それ>2ならば、それ=2   設定@「画像変更方法」=それ *画像変更方法取得   それは、設定@「画像変更方法」 *簡易一時停止設定(V)   Vを整数変換   設定@「簡易一時停止」=(それ>0) *簡易一時停止取得   それは、設定@「簡易一時停止」 *隠しアイテム表示設定(V)   Vを整数変換   設定@「隠しアイテム表示」=(それ>0) *隠しアイテム表示取得   それは、設定@「隠しアイテム表示」 *BG色設定(V)   Vを整数変換   もし、それ<0ならば、それ=0   違えばもし、それ>$FFFFFFならば、それ=$FFFFFF   もし(設定@「BG色」≠それ)ならば、     設定@「BG色」=それ          「」で背景変更処理 *BG色取得   それは、設定@「BG色」 *表示書体設定(S)   もし(設定@「表示書体」≠S)ならば、     設定@「表示書体」=S          システム:文字書体=S     WW=「 」の文字幅取得#文字描画用     WWW=「 」の文字幅取得#文字描写用(半角)     HH=「 」の文字高さ取得#文字描画用 *表示書体取得   それは、設定@「表示書体」 *直前命令保持設定(V)   Vを整数変換   設定@「直前命令保持」=(それ>0) *直前命令保持取得   それは、設定@「直前命令保持」 *簡易入力設定(V)   Vを整数変換   設定@「簡易入力」=(それ>0) *簡易入力取得   それは、設定@「簡易入力」 *ツリー表示設定(V)   Vを整数変換   設定@「ツリー表示」=(それ>0) *ツリー表示取得   それは、設定@「ツリー表示」 #いろんなパラメータ。 表示速度とは実数←表示速度設定→表示速度取得 選択色とは整数←選択色設定→選択色取得 表示文字色とは整数←表示文字色設定→表示文字色取得 画像変更方法とは整数←画像変更方法設定→画像変更方法取得 簡易一時停止とは整数←簡易一時停止設定→簡易一時停止取得 隠しアイテム表示とは整数←隠しアイテム表示設定→隠しアイテム表示取得 BG色とは整数←BG色設定→BG色取得 表示書体とは文字列←表示書体設定→表示書体取得 直前命令保持とは整数←直前命令保持設定→直前命令保持取得 簡易入力とは整数←簡易入力設定→簡易入力取得 ツリー表示とは整数←ツリー表示設定→ツリー表示取得 文章とはハッシュ=「」をハッシュ変換#文章をラベル毎に格納 飛翔ラベルとは文字列=「」#直接ラベルにジャンプ用 直前アイテムとは文字列=「」#ラベル内で、最後に得たアイテム(ラベル内限定) ラベル履歴とは配列=「」#ラベルの履歴(配列) 待機状態とは整数=0#文字表示を一時止める用 合成用とはイメージ#背景と文字を合成して表示 そのレイアウト=「全体」 その画面クリア(黒色で) その最前面表示=0 そのクリックした時は〜   仮ラベルとは文字列=「」   もし、待機状態=1ならば、     待機状態=0。     もし、飛翔ラベル≠「」ならば、       仮ラベル=飛翔ラベル。飛翔ラベル=「」       仮ラベルで文章@(仮ラベル)を処理 そのマウス移動した時は〜   マウスカーソル変更処理(32512に) 表示用とはイメージ#文字表示用 そのレイアウト=「全体」 その可視=0 表示用→画面クリア(黒色で) 背景用とはイメージ#背景用 そのレイアウト=「全体」 その可視=0 背景用→画像=「」 背景用→画面クリア(BG色で) 飛翔回数とは整数=128#ラベルの上限 (飛翔回数)回   飛翔用[回数-1]をラベルとして作成   飛翔用[回数-1]→可視=0   飛翔用[回数-1]→文字書体=表示書体#先   飛翔用[回数-1]→文字色=選択色   飛翔用[回数-1]→位置=「0,0」   飛翔用[回数-1]→タグ=「」   飛翔用[回数-1]→テキスト=「」#後   飛翔用[回数-1]→クリックした時は〜     仮ラベルとは文字列=自身→タグ     仮ラベルで文章@(仮ラベル)を処理   飛翔用[回数-1]→マウス入った時は〜     マウスカーソル変更処理(32649に)   飛翔用[回数-1]→マウス移動した時は〜     マウスカーソル変更処理(32649に) ツリー一覧表示とはツリー解析 #背景用フォルダ作成 もし、母艦パス&「背景」のフォルダ存在=0ならば、   母艦パス&「背景」にフォルダ作成 ※描画用 文字書体=表示書体 RR=10#余白 GG=5#行間 XX=RR#文字描画用。描画位置(X座標) YY=RR#文字描画用。描画位置(Y座標) WW=「 」の文字幅取得#文字描画用 WWW=「 」の文字幅取得#文字描写用(半角) HH=「 」の文字高さ取得#文字描画用 ※描画用ここまで ※自分のステータス 状態とはハッシュ=「」をハッシュ変換 状態@「初期AT」=20 状態@「AT」=20 状態@「最大HP」=20 状態@「HP」=20 状態@「初期所持金」=0 状態@「所持金」=0 *初期AT設定(V)   設定@「初期AT」=(Vを整数変換)の絶対値 *初期AT取得   それは、設定@「初期AT」 *AT設定(V)   設定@「AT」=(Vを整数変換)の絶対値 *AT取得   それは、設定@「AT」 *最大HP設定(V)   設定@「最大HP」=(Vを整数変換)の絶対値   V=設定@「最大HP」   もし(設定@「HP」>V)ならば、設定@「HP」=V *最大HP取得   それは、設定@「最大HP」 *HP設定(V)   VVとは整数=設定@「最大HP」      Vを整数変換   もし、それ<0ならば、それ=0   違えばもし、それ>VVならば、それ=VV      設定@「HP」=それ *HP取得   それは、設定@「HP」 *初期所持金設定(V)   設定@「初期所持金」=Vを整数変換 *初期所持金取得   それは、設定@「初期所持金」 *所持金設定(V)   設定@「所持金」=Vを整数変換 *所持金取得   それは、設定@「所持金」 初期ATとは整数←初期AT設定→初期AT取得 ATとは整数←AT設定→AT取得 最大HPとは整数←最大HP設定→最大HP取得 HPとは整数←HP設定→HP取得 初期所持金とは整数←初期所持金設定→初期所持金取得 所持金とは整数←所持金設定→所持金取得 初期AT=20#攻撃力初期値 AT=初期AT#攻撃力 最大HP=20 HP=最大HP 初期所持金=0 所持金=初期所持金 初期アイテムとは配列=「」#初期アイテム アイテムとは配列=「」#現在のアイテム 初期アイテムをアイテムにデータコピー ※自分のステータスここまで F8に「ステータス表示」をホットキー登録 F9に「ツリー解析表示」をホットキー登録 #サンプル用 長文とは文字列=「」 #ファイル読み込みをキャンセルで、サンプルが読み込まれる ファイル選択 もし、それ≠「」ならば、   それを開いてSJIS変換   もし、それ≠「」ならば、     /*     それを処理     */     長文=それ     長文でハッシュ設定処理          初期化用処理 違えば、   「選んでください」を「サンプル1{~}サンプル2」でボタン選択     もし、それ=「サンプル2」ならば、       長文=サンプル取得処理2     違えば、       長文=サンプル取得処理          長文でハッシュ設定処理     初期化用処理 ●初期化用処理   AT=初期AT   HP=最大HP   所持金=初期所持金   初期アイテムをアイテムにデータコピー      ラベル履歴=「」   『001』で(文章@「001」)を処理 ●ハッシュ設定処理(原稿で)   仮対象とは文字列=「」   重複チェックとはハッシュ=「」をハッシュ変換   重複表とは配列=「」      文章=「」をハッシュ変換      原稿で1から「*001{改行}」を文字検索   もし、それ=0ならば、     「*001 が存在しません」を言う     文章@『001』=原稿   違えば、     原稿を「*」で区切って反復       もし、回数>1ならば、         仮対象=対象         仮対象から改行まで切り取る         重複チェック@(それ)=重複チェック@(それ)+1         文章@(それ)=仮対象       違えば、#始まる前に、各行で、一行命令できる         仮対象=「[]」&改行&対象#終了判定をごまかす用         仮対象を処理          #ラベル重複をチェック     重複チェックのハッシュキー列挙して反復       もし、重複チェック@(対象)>1ならば、         重複表に「*」&対象を配列追加          もし、重複表≠「」ならば、       重複表の0に「以下のラベルが重複しています」を配列挿入       重複表を改行で配列結合       それを言う          飛翔チェック ●飛翔チェック   キー一覧とは配列=文章のハッシュキー列挙   一覧とは配列=「」   仮対象とは文字列=「」      キー一覧を反復     文章@対象を反復       対象を「[^\\]<(.+?)>」で正規表現マッチ       もし、それ≠「」ならば、         一覧に対象を配列追加         続ける       対象を「[^\\]\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         一覧に対象を配列追加         続ける       対象を「^\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         一覧に対象を配列追加         続ける   //一覧を言う      仮一覧とは配列=「」#ジャンプする一覧   一覧を反復     仮対象=対象     オンの間       仮対象を「.*?[^\\]<(.+?)>」で正規表現マッチ       もし、それ≠「」ならば、         仮一覧に抽出文字列を配列追加         仮対象=仮対象の「.*?[^\\]<(.+?)>」を「」へ正規表現単置換       違えば、         抜ける      一覧を反復     仮対象=対象     仮対象を「^\((.+?)\)」で正規表現マッチ     もし、それ≠「」ならば、       仮一覧に抽出文字列を配列追加     オンの間       仮対象を「.*?[^\\]\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         仮一覧に抽出文字列を配列追加         仮対象=仮対象の「.*?[^\\]\((.+?)\)」を「」へ正規表現単置換       違えば、         抜ける      一覧=「」#再利用   仮一覧を反復     キー一覧の0から対象を配列検索     もし、それ<0ならば、       一覧の0から「*」&対象を配列検索       もし、それ<0ならば、         一覧に「*」&対象を配列追加      もし、一覧≠「」ならば、     一覧の0に「ジャンプ先に指定されているが、存在しないラベル一覧」を配列挿入     一覧を改行で配列結合     それを言う    ●ラベル履歴追加処理(仮ラベルを)   もし、仮ラベル=""ならば、戻る      ラベル履歴の0から仮ラベルを配列検索   もし、それ<0ならば、     ラベル履歴に仮ラベルを配列追加 ●処理(原稿を{文字列=""}仮ラベルで)   #ラベル履歴に追加する   仮ラベルをラベル履歴追加処理      終了判定とは整数=1#このページで終わりなら1      #背景はそのまま。表示文字だけをクリアする   表示用→画面クリア(黒色で)   背景合成処理      #選択肢用   飛翔番号とは整数=0#飛翔用カウント   (飛翔回数)回     飛翔用[回数-1]→可視=0     飛翔用[回数-1]→タグ=「」   飛翔一覧とは配列=「」#飛翔用の使用一覧   過去YYとは整数=YY#改行したか調べる用         #描画位置を、初期位置に   XX=RR。YY=RR      文字色=表示文字色   飛翔ラベル=「」#直接ジャンプ用   直前アイテム=「」#このラベル内限定で、最後に得たアイテム      #命令処理用   選択フラグとは整数=0#選択肢用   エスケープとは整数=0#命令のエスケープ用   語句とは文字列=「」   命令とは整数=-1#命令があれば、ゼロ以上   命令語句とは文字列=「」   仮命令とは文字列=「」#命令語句を入れる用   直前命令とは配列=「」#このラベル内限定で、最後に処理した「囲み命令」      命令保持とは配列=「」#「@」で記憶した命令(実際に使用するのはコレ)   命令記憶とは配列=「」#「%」で記憶した命令(実際に使用するのはコレ)      始端とは配列=『<{★☆●○◎?^/!$|(』を文字列分解   終端とは配列=『>}★☆●○◎?^/!$|)』を文字列分解   #命令処理用ここまで      #簡易一時停止をするかどうか   もし、簡易一時停止=1ならば、     原稿=原稿の『。{2,}』を「。_」に正規表現置換     原稿=原稿の『\.{2,}』を「\._」に正規表現置換   もし、簡易入力=1ならば、     原稿=原稿の『\-\-(\d+)』を『\{HP=HP\-$1\}』に正規表現置換     原稿=原稿の『\+\+(\d+)』を『\{HP=HP\+$1\}』に正規表現置換      原稿を反復     #行ごとに     命令=-1。命令語句=「」。エスケープ=0。          もし、飛翔ラベル≠「」ならば、抜ける     対象を文字列分解して反復       もし、エスケープ=1ならば、         エスケープ=0         もし、命令<0ならば、           対象を文字表示処理         違えば、           命令語句に対象を追加       違えばもし、対象=「\」ならば、         エスケープ=1              違えばもし、命令<0ならば、         もし、選択フラグ=1ならば、           もし、対象≠「]」ならば、             もし、過去YY=YYならば、               もし、対象が全角か判定=1ならば、                 飛翔用[飛翔番号]→W=飛翔用[飛翔番号]→W+WW               違えば、                 飛翔用[飛翔番号]→W=飛翔用[飛翔番号]→W+WWW             違えばもし、過去YY≠YYならば、               飛翔一覧に飛翔番号を配列追加               飛翔番号=飛翔番号+1                              飛翔用[飛翔番号]→位置=「{XX},{YY}」               飛翔用[飛翔番号]→文字書体=表示書体               飛翔用[飛翔番号]→テキスト=「」               もし、対象が全角か判定=1ならば、                 飛翔用[飛翔番号]→W=WW               違えば、                 飛翔用[飛翔番号]→W=WWW               飛翔用[飛翔番号]→H=HH               過去YY=YY                          対象を文字表示処理           違えばもし、対象=「]」ならば、             選択フラグ=0             文字色=表示文字色                          飛翔一覧に飛翔番号を配列追加             飛翔番号=飛翔番号+1         違えばもし、対象=「[」ならば、           終了判定=0#選択肢が存在すれば、終了しない           文字色=選択色           選択フラグ=1                      飛翔用[飛翔番号]→位置=「{XX},{YY}」           飛翔用[飛翔番号]→文字書体=表示書体           飛翔用[飛翔番号]→テキスト=「」           飛翔用[飛翔番号]→W=0           飛翔用[飛翔番号]→H=HH           過去YY=YY         違えばもし、対象=「_」ならば、#一時停止           待機処理         違えばもし、対象=『#』ならば、#コメント処理。地の文のみ適用           抜ける         違えばもし、対象=『@』ならば、#直前命令を保持           もし、直前命令保持=0ならば、             対象を文字表示処理           違えばもし、直前命令保持>0ならば、             命令保持に直前命令をデータコピー         違えばもし、対象=『@』ならば、#命令保持を処理           もし、直前命令保持=0ならば、             対象を文字表示処理           違えばもし、直前命令保持>0ならば、             もし(命令保持≠「」&&命令保持[0]≠「<」)ならば、               命令保持[0]から命令保持[1]を『』で個別処理               もし、それ=1ならば、抜ける             違えば、               対象を文字表示処理         違えばもし、対象=『%』ならば、#直前命令を保持           もし、直前命令保持=0ならば、             対象を文字表示処理           違えばもし、直前命令保持>0ならば、             命令記憶に直前命令をデータコピー         違えばもし、対象=『%』ならば、#命令記憶を処理           もし、直前命令保持=0ならば、             対象を文字表示処理           違えばもし、直前命令保持>0ならば、             もし(命令記憶≠「」&&命令記憶[0]≠「<」)ならば、               命令記憶[0]から命令記憶[1]を『』で個別処理               もし、それ=1ならば、抜ける             違えば、               対象を文字表示処理         違えばもし、対象=『=』ならば、# $HP=0$と同等           もし、簡易入力=0ならば、             対象を文字表示処理           違えばもし、簡易入力>0ならば、             直前命令=「」             直前命令に「$」を配列追加             直前命令に「HP=0」を配列追加             「$」から「HP=0」を『』で個別処理             もし、それ=1ならば、抜ける         違えばもし、対象=『>』ならば、# $HP>0$と同等           もし、簡易入力=0ならば、             対象を文字表示処理           違えばもし、簡易入力>0ならば、             直前命令=「」             直前命令に「$」を配列追加             直前命令に「HP>0」を配列追加             「$」から「HP>0」を『』で個別処理             もし、それ=1ならば、抜ける         違えば、           始端の0から対象を配列検索           命令=それ           もし、命令<0ならば、             対象を文字表示処理           違えば、             語句=対象       違えば、         終端の0から対象を配列検索         もし、それ=命令ならば、           命令=-1。仮命令=命令語句。命令語句=「」                      もし、語句≠『<』ならば、             直前命令=「」             直前命令に語句を配列追加             直前命令に仮命令を配列追加                      語句から仮命令を飛翔一覧で個別処理           もし、それ=1ならば、抜ける         違えば、           命令語句に対象を追加     改行ページ処理      もし、終了判定=1ならば、     もし、飛翔ラベル=「」ならば、終了用処理     違えば、「□」で待機処理      #飛翔用を可視化(実際は見えない)   (飛翔回数)回     飛翔用[回数-1]→可視=(飛翔用[回数-1]→タグ≠「」)   #カーソルを変化させるため、強制的にマウス移動させる   机上マウスX,机上マウスYへマウス移動 ●個別処理(語句から仮命令を{配列}飛翔一覧で)   戻値とは整数=0   //仮命令を言う   語句で条件分岐     『★』ならば、#ラベル履歴に「存在」で、以降処理       ラベル履歴の0から仮命令を配列検索       もし、それ<0ならば、戻値=1            『☆』ならば、#ラベル履歴に「存在なし」で、以降処理       ラベル履歴の0から仮命令を配列検索       もし、それ≧0ならば、戻値=1            『(』ならば、#ラベルに強制ジャンプ       飛翔ラベル=仮命令       戻値=1            『<』ならば、#ラベルに選択ジャンプ       飛翔一覧を反復         飛翔用[対象]→タグ=仮命令              飛翔一覧=「」#クリアする            『{』ならば、#ナデシコする       仮命令をナデシコする            『●』ならば、#アイテム追加       もし、仮命令=「」ならば、         「入力してください」で尋ねる         もし、それ≠「」ならば、           仮命令=それ           仮命令=仮命令の「^\-+」を「」へ正規表現置換                      アイテムの0から仮命令を配列検索           もし、それ≧0ならば、仮命令=「」              直前アイテム=仮命令#仮命令が空でも、直前アイテムに入れる       もし、仮命令≠「」ならば、         アイテムに仮命令を配列追加            『○』ならば、#アイテム削除(持っていれば)       もし、仮命令≠「」ならば、         アイテムの0から仮命令を配列検索         もし、それ≧0ならば、           アイテムの(それ)を配列削除           #削除したアイテムが、直前アイテムだった場合           もし、直前アイテム=仮命令ならば、             直前アイテム=「」       違えば、#仮命令=「」         もし、直前アイテム≠「」ならば、           アイテムの0から直前アイテムを配列検索           もし、それ≧0ならば、             アイテムの(それ)を配列削除             直前アイテム=「」            『◎』ならば、#初期アイテムに追加       初期アイテムに仮命令を配列追加            『?』ならば、#アイテムを持っていれば、以降表示(一行のみ)       アイテムの0から仮命令を配列検索       もし、それ<0ならば、戻値=1            『^』ならば、#アイテムを持ってなければ、以降表示(一行のみ)       アイテムの0から仮命令を配列検索       もし、それ≧0ならば、戻値=1            『/』ならば、#戦闘。勝てば、以降表示(一行のみ)       仮命令で戦闘処理#1勝利0負けた       もし、それ=0ならば、戻値=1            『!』ならば、#文字入力。正解なら、以降表示(一行のみ)       「入力してください」で尋ねる       もし、それ≠仮命令ならば、戻値=1            『$』ならば、#条件式。真ならば、以降表示(一行のみ)       仮命令=仮命令の囲みトリム       "("&仮命令&")"をナデシコする       もし、それ=0ならば、戻値=1            『|』ならば、#背景変更(ファイル名のみでOK)       仮命令で背景変更処理      戻値で戻る #VV秒待つ。 ●待機時間処理(VVで)   戻値とは整数=0      単位秒とは実数=0.05   VV=(VV/単位秒)の整数部分      (VV)回     もし(待機状態=0)ならば、       戻値=1       抜ける     (単位秒)秒待つ      戻値で戻る ●待機処理({文字列="▽"}仮記号で)   #画像をクリックすると、待機状態=0になる   待機状態=1。      待機時間とは実数=0.3      待機状態の間     合成用のXX,YYへ仮記号を文字描画     合成用を描画処理反映     待機時間処理(待機時間)     背景合成処理     待機時間処理(待機時間) ●終了用処理   「ゲーム終了です{〜}続けますか?」で二択   もし、それ=0ならば、     終わる   違えば、     初期化用処理 ●文字表示処理(Sを)   フラグとは整数=Sが全角か判定#全角なら1   もし、S≠「」ならば、     表示用→文字表示(XX,YYにSを)     背景合成処理     (表示速度)秒待つ     もし、XX+WW≧表示用→W-RR-WWならば、       0で改行ページ処理     違えば、       XX=XX+WW*(フラグ=1)+WWW*(フラグ=0) ●改行ページ処理({整数=1}仮数で)   もし、XX=RRならば、抜ける      もし、YY+GG+HH≧表示用→H-RR-HHならば、     もし、仮数=0ならば、XX=XX+WW     //1秒待つ     「□」で待機処理     XX=RR     YY=RR          表示用→画面クリア(黒色で)     背景合成処理        違えば、     もし、飛翔ラベル=「」ならば、       XX=RR       YY=YY+GG+HH ●戦闘処理(STで)   #例「犬 攻撃10体力10」   STを「(.*?)攻撃(\d+)体力(\d+)」で正規表現マッチ   敵名前とは文字列=抽出文字列\0の「[  ]$」を「」に正規表現置換   敵攻撃とは整数=抽出文字列\1を整数変換   敵体力とは整数=抽出文字列\2を整数変換      もし、敵名前=「」ならば、敵名前=「敵」   戻値とは整数=1   仮ダメージとは整数=2   仮戦闘とは整数=敵攻撃+AT   仮乱数とは整数=0   システム時間で乱数初期化      ステータス表示      「戦闘開始!」を言う   オンの間     仮乱数=仮戦闘の乱数+1     もし、仮乱数≦敵攻撃ならば、#敵の攻撃成功       HP=HP-仮ダメージ       「あなたは {仮ダメージ} のダメージを受けた{~}あなたの残りHP={HP}」を言う     違えば、 #自分の攻撃成功       敵体力=敵体力-仮ダメージ       「{敵名前}に {仮ダメージ} のダメージ{~}{敵名前}の残り体力={敵体力}」を言う          もし、敵体力<1ならば、戻値=1。抜ける     違えばもし、HP<1ならば、戻値=0。抜ける      戻値で戻る ●背景変更処理(SSで)   #例「002.jpg」フルパスではなくて、「ファイル名」のみでOK   SSSとは文字列=母艦パス&「背景\」&SS      もし(SS≠「」)&&(SSSの存在=1)ならば、     もし、背景用→画像≠SSSならば、       背景用→画像=SSS       背景用を(合成用→W),(合成用→H)で画像比率変えず中央リサイズ       背景経過処理   違えば、     SSS=背景用→画像     背景用→画像=「」     背景用→画面クリア(BG色で)     もし、SSS≠「」ならば、       背景経過処理   背景合成処理 ●背景経過処理   仮分割とは整数=8   仮速度とは整数=4   仮幅とは整数   仮高さとは整数   仮回数とは整数=0      もし、画像変更方法=1ならば、     仮幅=合成用→W     仮高さ=(合成用→H/仮分割)の整数部分     (仮高さ)回       仮回数=回数       もし、仮回数%仮速度=0ならば、         (仮分割)回           背景用の0,(仮高さ*(回数-1)),(仮幅),(仮回数-1)を合成用の0,(仮高さ*(回数-1))へ画像部分コピー           0.001秒待つ           表示用を合成用の0,0へ画像合成           合成用を描画処理反映   違えばもし、画像変更方法=2ならば、     仮幅=(合成用→W/仮分割)の整数部分     仮高さ=合成用→H     (仮幅)回       仮回数=回数       もし、仮回数%仮速度=0ならば、         (仮分割)回           背景用の(仮幅*(回数-1)),0,(仮回数-1),(仮高さ)を合成用の(仮幅*(回数-1)),0へ画像部分コピー           0.001秒待つ           表示用を合成用の0,0へ画像合成           合成用を描画処理反映   違えば、     仮回数で1から60まで繰り返す       背景用を合成用の0,0へ仮回数で画像半透明コピー       0.02秒待つ       表示用を合成用の0,0へ画像合成       合成用を描画処理反映 ●背景合成処理   合成用→画像=「背景用」   表示用を合成用の0,0へ画像合成   合成用を描画処理反映 ●ステータス表示   仮表示とは配列=「」      仮表示に「あなたの攻撃力は {AT}」を配列追加   仮表示に「あなたの体力は {HP}/{最大HP}」を配列追加   仮表示に「あなたの所持金は {所持金}」を配列追加   もし、アイテム≠「」ならば、     仮表示に「あなたの持ち物は」を配列追加     アイテムを反復       もし、隠しアイテム表示=0ならば、         対象から1文字左部分         もし、それ≠「-」ならば、仮表示に「>」&対象を配列追加       違えばもし、隠しアイテム表示=1ならば、         仮表示に「>」&対象を配列追加      仮表示を改行で配列結合   それを言う ●ツリー解析表示   もし、ツリー表示=1ならば、     ツリー一覧表示→テキスト=長文     ツリー一覧表示→ツリー解析 ■ツリー解析   ・ツリー一覧{=""}   ・ツリー履歴{=""}      ・ノージャンプ{=""}      ・文章{=""}      ・Fテキスト{=""}   ・テキスト←テキスト設定→テキスト取得   ・テキスト設定(S)〜Fテキスト=S   ・テキスト取得〜それは、Fテキスト      ・独立ラベル調査〜     仮一覧とは配列=「」          文章のハッシュキー列挙して反復       ツリー履歴の0から対象を配列検索       もし、それ<0ならば、         仮一覧に「>*」&対象を配列追加          もし、仮一覧≠「」ならば、       仮一覧の0に「以下のラベルが、孤立しています」を配列挿入       仮一覧を改行で配列結合       それを言う      ・ノーラベル調査〜     もし、テキスト≠「」ならば、       ハッシュ作成処理          仮一覧とは配列=「」          キー一覧とは配列=文章のハッシュキー列挙     キー一覧を反復       文章@対象から飛翔チェック処理して反復         キー一覧の0から対象を配列検索         もし、それ<0ならば、           仮一覧の0から「>*」&対象を配列検索           もし、それ<0ならば、             仮一覧に「>*」&対象を配列追加          もし、仮一覧≠「」ならば、       仮一覧の0に「以下のラベルが、存在しません」を配列挿入       仮一覧を改行で配列結合       それを言う     違えば、       「リンク切れは、ありませんでした」を言う      ・ツリー解析〜     もし、テキスト≠「」ならば、       ハッシュ作成処理          ツリー一覧=「」     ツリー履歴=「」     ノージャンプ=「」     ツリー一覧に「,NN_001,001」を配列追加     「001」からツリー要素作成処理          独立ラベル調査          ツリー要素重複削除処理          ツリー履歴=「」     ツリー作成準備処理          ツリー一覧を改行で配列結合     ツリー母艦_TRにそれをツリーノード一括作成     ツリー母艦→可視=1     ツリー母艦_TR→ノード開く(NN_001を)      ・ツリー作成準備処理〜     仮対象とは文字列=「」     仮文字とは文字列=「」     仮名前とは文字列=「」     仮一覧とは配列=「」     仮配列とは配列=「」          ツリー一覧を反復       仮対象=対象       仮一覧=仮対象を「,」で区切る       仮文字=仮一覧\1       仮名前=仮一覧\2              ツリー履歴の0から仮文字を配列検索       もし、それ≧0ならば、         仮一覧[1]=仮文字&「_{回数}*」         仮一覧[2]=仮名前&「*」         仮対象=仮一覧を「,」で配列結合              ノージャンプの0から仮文字を配列検索       もし、それ≧0ならば、         仮一覧[2]=仮名前&「**」         仮対象=仮一覧を「,」で配列結合              仮配列に仮対象を配列追加       ツリー履歴に仮一覧[1]を配列追加          ツリー一覧=仮配列      ・ツリー要素重複削除処理〜     仮一覧とは配列=「」     ツリー一覧を配列逆順     ツリー一覧に「」を配列追加     ツリー一覧を反復       もし、対象=「」ならば、抜ける              ツリー一覧の(回数)から対象を配列検索       もし、それ<0ならば、         仮一覧に対象を配列追加          仮一覧を配列逆順     ツリー一覧=仮一覧      ・ツリー要素作成処理(仮ラベルから)〜     ツリー履歴の0から仮ラベルを配列検索     もし、それ≧0ならば、戻る          ツリー履歴に仮ラベルを配列追加          仮一覧とは配列=「」     仮一覧=文章@仮ラベルから飛翔チェック処理     もし、仮一覧=「」ならば、       ノージャンプに「NN_」&仮ラベルを配列追加       戻る          仮一覧を反復       ツリー一覧に「NN_{仮ラベル},NN_{対象},{対象}」を配列追加       対象からツリー要素作成処理      ・ハッシュ作成処理〜     文章=「」をハッシュ変換          テキストの1から「*001」&改行を文字検索     もし、それ=0ならば、       「*001 が存在しません」を言う       テキスト=「*001」&改行&テキスト          仮対象とは文字列=「」     テキストを「*」で区切って反復       もし、回数>1ならば、         仮対象=対象         仮対象から改行まで切り取る         文章@(それ)=仮対象      ・飛翔チェック処理(仮文章から)〜     戻値とは配列=「」     仮一覧とは配列=「」     仮対象とは文字列=「」     仮仮一覧とは配列=「」          仮文章を反復       対象を「[^\\]<(.+?)>」で正規表現マッチ       もし、それ≠「」ならば、         仮一覧に対象を配列追加         続ける       対象を「[^\\]\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         仮一覧に対象を配列追加         続ける       対象を「^\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         仮一覧に対象を配列追加         続ける          もし、仮一覧=「」ならば、戻値で戻る          仮一覧を反復       仮対象=対象       オンの間         仮対象を「.*?[^\\]<(.+?)>」で正規表現マッチ         もし、それ≠「」ならば、           仮仮一覧に抽出文字列を配列追加           仮対象=仮対象の「.*?[^\\]<(.+?)>」を「」へ正規表現単置換         違えば、           抜ける          #強制ジャンプから抽出     仮一覧を反復       仮対象=対象       仮対象を「^\((.+?)\)」で正規表現マッチ       もし、それ≠「」ならば、         仮仮一覧に抽出文字列を配列追加       オンの間         仮対象を「.*?[^\\]\((.+?)\)」で正規表現マッチ         もし、それ≠「」ならば、           仮仮一覧に抽出文字列を配列追加           仮対象=仮対象の「.*?[^\\]\((.+?)\)」を「」へ正規表現単置換         違えば、           抜ける          もし、仮仮一覧≠「」ならば、戻値=仮仮一覧     戻値で戻る      ・作る〜     ツリー母艦をフォームとして作成     ツリー母艦→スタイル=「ダイアログスタイル」     ツリー母艦→最前面表示=1     ツリー母艦→可視=0          ツリー母艦_TRをツリーとして作成     ツリー母艦_TR→親部品=ツリー母艦     ツリー母艦_TR→レイアウト=「全体」          文章=「」をハッシュ変換 #マウスカーソル変更用(なでしこライブラリより) ●カーソルアイコン取得(ファイルの種類の) = DLL("user32.dll","DWORD LoadCursorA(BOOL,DWORD)") ●マウスカーソル設定(Iに) = DLL("user32.dll","DWORD SetCursor(DWORD)") ●マウスカーソル変更処理(Vに)   (0のVのカーソルアイコン取得)にマウスカーソル設定 #----------------------------------------------------------------------- #----------------------------------------------------------------------- ※ここからサンプル ●サンプル取得処理   それは『 #ファイルを読んだときに、一回だけ処理される {表示速度=0.03}#文字を描写する速度 {表示書体=「MS ゴシック|14|太字」}#表示する文字書体 {表示文字色=白色}#基本の文字色 {選択色=黄色}#選択肢の文字色 {BG色=$8000}#背景色 {画像変更方法=0}#画像が変わる時の方法 {簡易一時停止=0}#「。」連続で、一時停止するかどうか {隠しアイテム表示=0}#「-」の付いたアイテムを表示するかどうか {直前命令保持=0}#@@命令を使用するかどうか {簡易入力=0}#HP関連の簡易入力を使用するかどうか {ツリー表示=1}#F9でツリー表示するかどうか(普通は0) {初期AT=18}#攻撃力 {最大HP=100}#体力の最大値 {初期所持金=0}#初期の所持金 ◎鍵◎#初期アイテムを設定 #一回だけ処理、ここまで *001 {ステータス表示} 家です。_ |001.png|#存在すれば、この画像に。無ければBG色 ?-勝利?[■外に出る]<0021> ^-勝利^[■外に出る]<002> [■家にいる]<003> ?鍵?[■鍵を掛ける]<011> [■トイレに行く]<012> $HP>0$今日も元気です。きっといい一日になることでしょう $HP=0$あなたは、すでに死んでます *0021 外に出ました。どこに行きましょう。_ [■コンビニに行く]<005> [■家に帰る]<006> *002 外に出ると、犬がいました。_ |002.png| [■なでる]<004> [■無視する]<005> [■家に帰る]<006> [■戦う] ちなみに、放し飼いです。飼い主はいません *003 家のパソコン画面が気になります。_ 画面はパスワードでロックされてます。_ !1234!●-正解● ^-正解^[■思い出せないので、寝る]<006> ?-正解?パスワードが解けたので、PCげーに夢中になります。_ ?-正解?○-正解○気が付けば――50年経っていました。_あなたは、ゲームをしている夢を見ていたようです。やっと現実に戻ることができました。 *004 ?-心の傷?怖かったので、手を伸ばすことをやめました ^-心の傷^手を伸ばすと…噛み付かれました_ ^-心の傷^体力が1減りました。{HP=HP-1} $HP=0$あなたは、手の傷から死んでしまいました・・・無念 $HP>0$^-心の傷^?カイザーナックル?カイザーナックルが粉々に砕けました○カイザーナックル○{AT=AT−120}{ステータス表示} $HP>0$^-心の傷^[■腹が立ったので戦う] $HP>0$^-心の傷^●-心の傷● $HP>0$犬を無視して、[■コンビニに行く]<005> *005 ||#BG色に 歩くと、コンビニが見えました。_ [■買い物をする]<007>こともできるし、[■家に帰る]<013>こともできます *006 することがないので、寝ました。また明日(001) *007 ?サイフ?ポケットの中の財布を確認します。 ?サイフ?^-メモ既読^お札の間に数字の書いた紙が挟まっていました。 ?サイフ?^-メモ既読^メモ紙のようです。「1234」と書いてありました。●-メモ既読● ?サイフ?(071) ?スマホ?スマホがあって良かった。キャッシュレス決済で買い物できます(071) 財布を忘れたので、しぶしぶ家に帰ります(013) *071 何を買いますか。_ [■おでん]<009> [■中華まん]<010> *008 家に帰って、寝ました…また明日(001) *009 おでんを食べると、気分が悪くなりました。 食あたりのようです。_ 体力10減りました。 {HP=HP-10} $HP=0$あなたは死んでしまいました… $HP>0$まだ買い物をしますか $HP>0$[■しないで帰る]<013> $HP>0$[■中華まんを買う]<010> *010 ?中華まん?もう持ってるので、買うのを止めました。 ^中華まん^中華まんは最高です●中華まん●。 あなたは家に帰ります(013) *011 鍵を掛けました。_ ^カイザーナックル^偶然、ドアの下に「カイザーナックル」を見つけました ^カイザーナックル^装備しますか? ^カイザーナックル^[■装備する]<017> [■外に出る]<002> *012 トイレから出てくると、テーブルの上が気になりました。よく見ると…_ ?スマホ??-勝利?テーブルの上にはなにもありませんでした。(0021) ?タバコ??-勝利?テーブルの上にはなにもありませんでした。(0021) ?サイフ??-勝利?テーブルの上にはなにもありませんでした。(0021) ?スマホ?^-勝利^テーブルの上にはなにもありませんでした。(002) ?タバコ?^-勝利^テーブルの上にはなにもありませんでした。(002) ?サイフ?^-勝利^テーブルの上にはなにもありませんでした。(002) 何か置いてあるようです。これは何?●● ?スマートフォン?○○●スマホ● ?スマホ??-勝利?スマホを持っていきます(0021) ?タバコ??-勝利?タバコを持っていきます(0021) ?スマホ?^-勝利^スマホを持っていきます(002) ?タバコ?^-勝利^タバコを持っていきます(002) ?財布?○○●サイフ● ?サイフ??-勝利?サイフを持っていきます(0021) ?サイフ?^-勝利^サイフを持っていきます(002) ?-勝利?○○得体の知れない物を持っていくのを止めました(0021) ^-勝利^○○得体の知れない物を持っていくのを止めました(002) *013 テレビがつけっぱなしでした。_ [■テレビを見る]<015> ?中華まん?中華まんを[■食べる]<014> *014 ○中華まん○ 生きる力が沸いてきます。 {HP=最大HP} 体力が、全回復しました。{ステータス表示} おなかいっぱいなので寝ます(016) *015 面白い番組がないので、ふてくされて寝ました。また明日(001) *016 すっきりと目が覚めました。いい気分です。_ また一日が始まります(001) *017 手に付けました。●カイザーナックル●{AT=AT+120} 攻撃力アップしました{ステータス表示} 外に出ます(002) *battle 犬と戦います 犬 攻撃力20 体力20 /犬 攻撃20体力20/●-勝利● ^-勝利^あなたは大怪我を追いました。 ^-勝利^救急車で病院に運ばれましたが…永眠しました。 ?-勝利?あなたは勝ちました。○-心の傷○ ?-勝利?満足な気持ちで、歩き出します(005) 』 ●サンプル取得処理2   それは『 {ツリー表示=1}#F9でツリー表示するかどうか *001 朝です。 [息子を学校へ行かせる]<0011> ★0011★[息子を学校に行かせない]<0012> ★0015★[息子を連れて、学校に行く]<0020> ★0020★[息子と学校へ。帰りも迎えに行く]<0021> *0020 息子を学校に、無事に送り届けました。_ 家に帰る途中、私はスーパーに寄って買い物をします。_ 午後からパートの仕事に出て、家に帰り、息子の帰りを待ちます。_ しかし、息子は予定の時間になっても帰ってきません。_ 午後六時過ぎ、電話が鳴りました。警察からでした。_ 息子が川で溺死した状態で発見された、ということでした。(bad) *0021 息子を学校に、無事に送り届けました。_ 家に帰る途中、私はスーパーに寄って買い物に。_ 午後から、パートの仕事でしたが、休みを取りました。_ 息子には、学校が終わったら、連絡を入れるように言っています。_ 午後三時すぎ、息子から連絡が入り、私は学校へ。校門で息子が出てくるのを待ちます。_ 息子が現れます。私は彼の手をとり、[一緒に帰宅しました]<0022> *0022 家に帰ります。鍵を差し込むと……玄関の鍵は開いていました。_ ★0023★☆0030☆[警察を呼ぶ]<0030> ★0030★[警察を呼ぶ]<0031> [家に入る]<0023> *0023 鍵を閉め忘れたのでしょうか。私はドアを開けて中に入ります。_ 玄関の電気をつけて、廊下の電気をつけ――。_ 目の前が、真っ白になってしまいました。_ どれだけの時間が経ったのでしょうか。私は意識を失っていたようです。_ 目を覚ました私の目の前に広がった光景。_ 首が変な方向に曲がった息子が、玄関の横に倒れていました。(bad) *0030 警察を呼びます。その間、私と息子は家に入らず、家の前にいました。_ 三十分ほど経って、警察官が二名やってきました。二人とも男性です。_ 警察の人に事情を説明し、私たちは家の中に入ります。_ やはり玄関のドアに鍵は掛かっていません。_ 玄関から廊下へ。居間へやってきます。警察官も私たちの後ろについてきます。_ 警官は、家の中を見回しています。_ 突然、玄関から物音が聞こえました。_ 私たちが振り返ると……男らしき人物が、走って玄関から外に逃げていくところでした。_ 警官は、男に気がつくと、慌てて彼を追いました。_ 数分後、警官は戻ってきました。しかし、男には逃げられてしまったようでした。(bad2) *0031 警察を呼びます。その間、私と息子は家に入らず、家の前にいました。_ 三十分ほど経って、警察官が二名やってきました。二人とも男性です。_ [一人は外で待機してもらう]<0032> [二人に一緒に家に入ってもらう]<0033> *0032 警察の人に事情を説明し、私たちは家の中に入ります。_ やはり玄関のドアに鍵は掛かっていません。_ 玄関から廊下へ。居間へやってきます。警察官は一人だけ私たちの後をついてきています。_ もう一人は、玄関の入り口で待ってくれています。_ 私たちの傍にいる警官は、周囲を警戒しながら歩いていました。_ 突然、玄関から物音が聞こえました。_ 私たちが振り返ると……男らしき人物が、走って玄関から外に逃げていくところでした。(0034) *0033 警察の人に事情を説明し、私たちは家の中に入ります。_ やはり玄関のドアに鍵は掛かっていません。_ 玄関から廊下へ。居間へやってきます。警察官も私たちの後ろについてきます。_ 警官は、家の中を見回しています。_ 突然、玄関から物音が聞こえました。_ 私たちが振り返ると……男らしき人物が、走って玄関から外に逃げていくところでした。_ 警官は、男に気がつくと、慌てて彼を追いました。_ 数分後、警官は戻ってきました。しかし、男には逃げられてしまったようでした。_(bad2) *0034 玄関先で、大きな音が何度も聞こえました。警官の一人と男が争っているようです。_ すぐに私たちの傍にいた警官も合流し、ほどなく男はおとなしくなりました。_ 男は警察に連行され、私たちの家からいなくなりました。(end) *end 後日、警察から話を聞きました。_ 男は私の家の近所に住んでいるらしく、どうやら、私のストーカーだったようです。_ 私の家に盗聴器を仕掛けていた、ということでした。_ この家は、息子と私の二人暮らし。息子がいなくなれば、家には私だけになる。_ 男には、息子が邪魔だったようです。 私は息子と一緒に引越しをすることに決めました。(true) *true 朝です。_ 息子と朝食を食べていると、玄関のチャイムがなりました。_ 玄関に行ってみます。ドアを開けると、夫が立っていました。_ 私は夫に抱きつきました。息子も私に続いてやってきて、夫に抱きつきました。_ 私と夫と息子は三人で手をつないで、外の世界へ行きました。 *bad2 私はあまりの緊張と疲労で、目の前が真っ暗になってしまいました。_ ……_ 我に返ると、息子がテーブルについて食事をしていました。_ 時計を見ると…午前七時です。_ 寝ぼけていたのでしょうか。_ 私は顔を両手で挟むように叩いて気合を入れました。(001) *0011 息子は学校へ行きました。_ 私は洗濯物を干します。_ 午前十一時ごろ、電話が鳴りました。_ 電話の相手は、警察でした。_ 息子が交通事故で、なくなった、ということでした。(bad) *bad 私は目の前が真っ暗になりました。_ ……_ 我に返ると、息子がテーブルについて食事をしていました。_ 時計を見ると…午前七時です。_ 寝ぼけていたのでしょうか。_ 私は顔を両手で挟むように叩いて気合を入れました。(001) *0012 息子は喜んで、ゲームを始めました。_ 私は洗濯物を干します。_ 午前十一時になりました。_ 息子が家にいるので昼食の準備をしなければいけません。_ [近くのスーパーへ買い物に]<0013> ★0013★[出前を取る]<0014> ★0014★[外食する]<0015> *0013 ゲームをしている息子は着いてきません。_ 私は一人で、近くのスーパーへ買い物に。_ 一時間くらい買い物をして、家に戻ってくると、 居間で息子が倒れていました……息をしていませんでした。(bad) *0014 息子が外に出たがらないので、ピザを注文しました。_ しばらく経って、玄関のチャイムがなります。_ 私はすぐに玄関のドアを開けました。_ 目の前には、制服姿に帽子、マスクにメガネの男が立っています。_ 手には注文したピザを持っていました。_ 私は彼にお金を払い、ピザを受け取りました。_ 喧嘩にならないように、私と息子で二つのピザを注文しています。_ 三十分後。_ 息子が、体調が悪いと言い出し、トイレで吐きました。_ そして、その場にぐったりとして、倒れます。_ 私はなんともありません。_ すぐに救急車を呼びます。息子の顔色はどんどん悪くなります。_ ほどなく、息子は動かなくなりました。(bad) *0015 嫌がる息子を強引に外に連れ出しました。_ 今日の昼食は、近くのファミレスです。_ 息子は、文句を言いながらも、私の後ろをついて来ます。_ 三十分ほど歩いて、あと少しで目的地につく、という直前の信号で、 私は息子がいないことに気がつきます。_ 慌てて、今来た道を戻ります。_ ふと、帰る途中、脇道が気になり、覗いてみると、息子が倒れていました。_ 息子の足元には、真っ赤な血溜りが出来ていました。(bad) 』