shiori互換dll『里々(さとり)』用辞書 The 15 Puzzle ┏━━━━━┓ ・"SSP"必須。最新版推奨。 ┃ @ABC ┃  http://ssp.shillest.net/ ┃ DEFG ┃ ┃ HIJK ┃ ・"satori.dll"Mc146-1以降及び"ssu.dll"必須。 ┃ LMN○ ┃  「里々/整備班カスタム」最新版推奨。 ┗━━━━━┛  http://ms.shillest.net/satoriya.xhtml #-------------------------------------------------------------------- # 導入方法 #  1.里々のバージョンを確認する。 "satori.dll"、"ssu.dll"が使用している関数に対応している必要があります。  2.関数が登録されているか確認する。 "satori_conf.txt"内の「@SAORI」に使用している関数が登録されている必要があります。  3.辞書ワイルを追加する "dicXX_15puzzle.txt"を適当にリネームして 「(伺か本体ディレクトリ)\ghost\(ゴースト名)\ghost\master」に追加してください。  4.ゲームを開始する メニュー画面等に下記のように追記してください。 既に(sprintf,%c,2)(sprintf,%c,3)に対応している場合、引数区切り追加は不要です。 *メニューのサンプル $引数区切り追加 (sprintf,%c,2) $引数区切り追加 (sprintf,%c,3) :こんな感じでどうぞ。 _15パズル開始 15puzzle_start #-------------------------------------------------------------------- # メッセージの変更、セーブデータの削除(開発者用) # *15パズル開始メッセージ :ゲーム「15パズル」を開始します。 方向キーでパネルを入れ替え、左上から@〜Nの順に並べ替えてください。 *15パズル終了メッセージ :(5)クリアです。おめでとうございます。 :お疲れ様。 *15パズルのセーブデータを削除 :ゲーム「15パズル」に関するセーブデータを削除します。 _実行 15puzzle_delete _キャンセル 15puzzle_delete_cancel *15puzzle_delete $15puzzle_belt $15puzzle_blank $flag_15puzzle $flag_PShuffle :(追加単語の全削除、15puzzle_pattern)削除しました。 $手動セーブ 実行 *15puzzle_delete_cancel :キャンセルしました。 #-------------------------------------------------------------------- # 操作用キー設定。 # 「↑↓←→」に何らかのコマンドを当てている場合はそちらに追記する必要があります。 # *upが押された >15puzzle_up (flag_15puzzle) *downが押された >15puzzle_down (flag_15puzzle) *leftが押された >15puzzle_left (flag_15puzzle) *rightが押された >15puzzle_right (flag_15puzzle) #-------------------------------------------------------------------- # システム部。 # 分かる方は適当にいじっちゃってください。 # *15puzzle_start $flag_15puzzle 1 $flag_PShuffle 1 :(15puzzle_random)\_q(15puzzle_panel)\_q\n\n[half](15パズル開始メッセージ) $flag_PShuffle 0 #比較用。パズルの正解。 @15puzzle_answer @ABCDEFGHIJKLMN○ #パネルのシャッフル。ゲーム開始毎に数回シャッフルさせているので遊ぶほど複雑に。 @15puzzle_random (set、15puzzle_belt、 (if,(単語群「15puzzle_pattern」の存在)!=0, (15puzzle_pattern), NEMCH○IGDABFLJK@ ) )(times、(乱数6〜9)、 (15puzzle_blank_position)(15puzzle_(nswitch,(乱数1〜4),up,down,left,right)) )(追加単語の全削除、15puzzle_pattern)(単語の追加、15puzzle_pattern、(15puzzle_belt))\c #パネルの空白位置を取得。 @15puzzle_blank_position (nop、 (split, (15puzzle_belt) ) )(set、15puzzle_blank、 (times, 16, (if(sprintf,%c,3) (compare(sprintf,%c,2) (S(C0))(sprintf,%c,2) ○ )==1(sprintf,%c,3) (calc(sprintf,%c,2)(C0)) ) ) ) #パネル表示。"substr"で4枚ずつ4段に分ける。"compare"で正解と比較。 @15puzzle_panel (substr, (15puzzle_belt),0,4 )\n(substr, (15puzzle_belt),4,4 )\n(substr, (15puzzle_belt),8,4 )\n(substr, (15puzzle_belt),12,4 )(15puzzle_blank_position)(when、 (compare,(15puzzle_belt),(15puzzle_answer))&&!(flag_PShuffle)、 (15puzzle_clear) )\![set,balloontimeout,0] #パネルの移動処理。Wiz様の"replace"案を参考にさせていただきました。 *15puzzle_up >15puzzle_error (15puzzle_blank)>11 :(nop、(split,(15puzzle_belt)) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 (S(calc,(15puzzle_blank)+4))、 ● ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ○、 (S(calc,(15puzzle_blank)+4)) ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ●、 ○ ) )\_q((when(sprintf,%c,3)!(flag_PShuffle)(sprintf,%c,3) 15puzzle_panel(sprintf,%c,3) nop、 ))\_q *15puzzle_down >15puzzle_error (15puzzle_blank)<4 :(nop、(split,(15puzzle_belt)) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 (S(calc,(15puzzle_blank)-4))、 ● ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ○、 (S(calc,(15puzzle_blank)-4)) ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ●、 ○ ) )\_q((when(sprintf,%c,3)!(flag_PShuffle)(sprintf,%c,3) 15puzzle_panel(sprintf,%c,3) nop、 ))\_q *15puzzle_left >15puzzle_error (calc,(15puzzle_blank)%4)==3 :(nop、(split,(15puzzle_belt)) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 (S(calc,(15puzzle_blank)+1))、 ● ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ○、 (S(calc,(15puzzle_blank)+1)) ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ●、 ○ ) )\_q((when(sprintf,%c,3)!(flag_PShuffle)(sprintf,%c,3) 15puzzle_panel(sprintf,%c,3) nop、 ))\_q *15puzzle_right >15puzzle_error (calc,(15puzzle_blank)%4)==0 :(nop、(split,(15puzzle_belt)) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 (S(calc,(15puzzle_blank)-1))、 ● ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ○、 (S(calc,(15puzzle_blank)-1)) ) )(set(sprintf,%c,3)15puzzle_belt(sprintf,%c,3) (replace、(15puzzle_belt)、 ●、 ○ ) )\_q((when(sprintf,%c,3)!(flag_PShuffle)(sprintf,%c,3) 15puzzle_panel(sprintf,%c,3) nop、 ))\_q *15puzzle_error :\_q((when(sprintf,%c,3)!(flag_PShuffle)(sprintf,%c,3) 15puzzle_panel(sprintf,%c,3) nop、 ))\_q *15puzzle_clear $flag_15puzzle $flag_PShuffle $15puzzle_belt $15puzzle_blank :\_q\n\n[half](15パズル終了メッセージ)