こんばんは。
じゃじゃ馬なステレオミキサーに振り回されるぽりです。
1.机で考える
ぽりが前からステージクリア系のパズルをデザインするときは、
最初にほぼ全てのコースを考えて、あらかた揃ったら難易度順にソートして実装という制作順になってます。デザイン案を書き出す媒体はPCのペイントだったりノートだったりスケブだったりするのですが。(最近では机に向かわない体勢でもすぐに書き留められるスケッチブックがお気に入り)
プレイヤーさんは基本的に「ゲームが突然難しくなる」という状況に対応できないため、難易度はプレイが進むごとにだんだん上がっていく方式がよろしいのですが、
作者が都合よく難易度順にネタが浮かぶということはありません。そのため、
浮かんだネタを一時保存してソートするという作業は非常に重要な要素となります。
また、スケッチブックの場合、
PC前に向かってない時でもネタが浮かんだらすぐ書けるという意味でも重宝しています。気が向いたらどんどん書くという行為はぽりに結構合った方法みたいです。
ただ、変な落書きをする機会も増えてしまったので結果として得になってるかはわかりません。
2.文字列操作のSAN値チェック
ウディタ2.02で実装された新しい文字列操作機能「指定文字まで/以降を切り出し」ですが、一応想定された使用用途は「自作スクリプト機能実装時に」だそうですね。でも、ぽりとしてはちょっとこの機能に疑問持ってました。
「『切り出しのトリガーになる文字』→『\n』に置換して『1行切り出し』じゃダメなの?」と。
でも、「1行切り出し」の方は文字列変数2つ必要ですし、もしかしたら、ちゃんと仕様覚えたら指定文字切り出し機能のほうが便利なシーンはあるのかも?と思って調査しました。
TEST 1:指定文字が複数出てきたらどこからどこまで切り出すの?
テスト結果はこちら。
(※以下の画像は全てクリックすると新しいタブ・ウィンドウで原寸大表示されます)
RESULT 1:指定文字が複数あったら最初にヒットした文字で分ける
この処理のミソとなるのは、「
『指定文字以降切り出し』をしてもまだ指定文字が入ってる可能性がある(上画像の下のパターン)」でしょうか。ということは切り出し機能をループさせれば「
『AAA,BBB,CCC,DDD』のような文の『BBBだけ』や『CCCだけ』を1変数で取り出す」ことができるっぽいですね。
TEST 2:指定文字が2文字以上でもちゃんと機能するの?
あれ?2文字目残ってる。
もしかして指定文字って1文字しか指定できないのかな?
あ。検索自体は2文字以上でもちゃんとしてくれるんだ。
RESULT 2:指定文字が2文字以上だと検索はきちんとするけど切り出すのは1文字目だけ
ってかこれ普通にバグじゃないですかーやだー 後でバグ報告行ってきます。
TEST 3:もしかして文字コードで検索とかしてないよね?
これはちょっと解説が必要かな。
ウディタ(に限らず、コンピュータ上で文字を扱えるソフトほぼ全て)では「文字コード」というのを元に処理をしています。この文字コードは
すべての文字に割り振られているいわば「登録番号」のようなものであり、この番号を元に文字を扱っているのです。
文字コード「Shift-JIS」において
『」(全角かぎ括弧閉じ)』の登録番号は8176(16進数)、
『v(半角V小文字)』の登録番号は76(16進数)で2桁一致しているため、ソフトによっては誤動作することもあったりします。
(余談:すげえ昔のウディタで文字列変数に『ソ』を入れるとバグるというのがありましたが、
『ソ』の登録番号が835C、『\』が5Cだったために\と勘違いされて起こったバグでした。)
まあ、でもこれに関してはテストの結果、影響は無いと見ていいっぽいですね。
RESULT 3:文字コードによるバグは考えなくてよさそう
ということは「複数の文字を指定文字にすると上手くいかない」ことさえ気をつければ、
「文字列変数の特定部分だけをバッファ変数なしに切り出せる」というメリットがあるみたいです。使いこなすの大変そうだけどピンポイントで便利な部分は確実に有りそう。うん。
PR