「あのね……」
「おいおい、また黄昏から入るのか? 今度はどうした?」
「すきゃんてぃ、前よりもっともっともっとちょー重大なことに、気づいたんだなーこれが」
「ほほう。それは一体何のことだ?」
「んと、さっき作った、名前入力のスクリプトなんだけど、あれぢゃーぜんっぜんっだめなんだなーこれが」
「ほほう。して、その理由は?」
「あんたってば、いぢわるぢゃんよもー。わかってんのに、すきゃんてぃにゆわせんのわ、ずるっちーもん」
「何のことかわからん」
「んぢゃ、言うもん。ちょー長い名前を入れた時に、こんなふーになんだもん」
「どれどれ?」

「うーむ……」
「ふつー、こんな変な名前は入れないよねー。んでも、変な人とかわ、わざと変な名前を入れてやんかもしんないでしょー? んでも、それって、ちょー困んもん」
「それで?」
「ふつー、日本人の苗字や名前って、多くても2文字から3文字かなー、とか思うの。んで、それ以上の名前は、変な名前だよねー」
「一概にそうとも言えないぞ。若草月影綾小路・日景春乃宮春日局御前、みたいな女性がいるかもしれん」
「んきゃー! そんなわかくさつきかげあやのこじ・ひかげはるのみやかすがのつぼねごぜんみたいな長ーい名前の人なんかいるわけないぢゃんよもー!」
「わかったわかった、それで?」
「んでもって、文字の入力数を制限したいんだなー。苗字も名前も3文字ぐらい、合わせて6文字ぐらいにしてほしーんだなー」
「それじゃ、その方法を教えよう」
「頼むもん」
「ここで使う新しいタグは、[if] タグだ」
「いふいふ? いふいふ?」
「何が言いたいんだ? お前」
「何でもないもん」
「このタグは、条件分岐をする時に非常によく使うから、ここでしっかりと使い方を覚えておくと便利だよ」
「わかったもん」
「さて、[if] タグで条件分岐を行う時は、以下のような書式を書く」
[if exp="変数または数値、等号または不等号、変数または数値"]\
[( [if] タグによって評価された式が正の場合の処理)]\
[endif]\
|
「よくわかんない」
「それじゃ例を挙げてみよう。変数 f.name1 に入力された名前が『すきゃんてぃ』の時のみ *scanty ラベルにジャンプする条件分岐は、以下のようになる」
[if exp="f.name1=='すきゃんてぃ'"]\
[jump target=*scanty]\
[endif]\
|
「まだわかんない」
「それじゃもう一つ。変数 f.okane の値が500以下の場合のみお金を500もらえる条件分岐は、以下のようになる」
[if exp="f.okane<=500"]\
[eval exp="f.okane=f.okane+500"]\
[endif]\
|
「もっとわかんない」
「それじゃもう一つ。変数 f.shumi1 に入力された文字と変数 f.shumi2 に入力された文字が一致した場合のみ『趣味が合いますね』という表示をする条件分岐は、以下のようになる」
[if exp="f.shumi1==f.shumi2"]\
趣味が合いますね。[l]
[endif]\
|
「むー」
「一行目、[if] タグの行で行っていることは、変数と文字、または変数と数値、または変数と変数の照合だ。もしこの照合が『正しい』場合は [if] タグと [endif] タグの間にあるタグが実行されたり、文章が表示されたりする。照合結果が『違う』場合は、[if] タグと [endif] タグの間の行は無視される」
「ちょこーとだけ、わかった」
「 [if] タグを使った評価式を書く時の注意は下記の通りだ」
基本式 [if exp="ABC"]\
AとCには変数や定数、文字列などが入り、Bには等号や不等号が入る
Aの書式 変数、定数はそのまま書く。
文字列は必ずシングルクオーテーション(')でくくる。
Bの書式 == AとCが等しいという意味。
>= AがC以上という意味。
<= AがC以下という意味。
> AがCより大きいという意味。
< AがCより小さいという意味。
!= AがCと異なるという意味。
|
「ふーん」
「それじゃ、練習してみようか。f.day という変数が7以上の時は、『一週間が過ぎました』という文章を表示させる条件分岐式を書いてごらん」
「んーと、[if exp="……」
「その後には変数名と数値を照合する式を書くんだ」
「……f.day>=7"]……これでいい?」
「よくできました。それじゃ、その後は普通にスクリプトを書いてごらん」
「んーんーんー」
[if exp="f.day>=7"]\
一週間が過ぎました。[l]
[endif]\
|
「できたじゃんか。それでOKだよ」
「なんとなーく、わかったみたい」
「それじゃ、いよいよ入力文字数制限の説明をするぞ」
「ふぅ」
「また、ため息なんかついちゃって」
「難しーなーとか思ってんだもん」
「大丈夫、さあ行くぞ」
「ふぅ」
「文字列の入力制限を行う場合は、文字変数に入力された文字列が何文字かを調べ、それを評価する式を作ればいい」
「……」
「文字変数の直後に、.length と書くことにより、その評価式は、文字変数自体の評価ではなく、文字変数の長さに対する評価式になる」
「ふぅ」
「たとえば、f.name1 という文字変数を3文字までに入力制限したい場合は、次のように書く」
[if exp="f.name1.length>3]\
[er]\
名前は3文字までにして下さい。[l]
[endif]\
|
「上の式は、f.name1 という変数の長さが3より大きい場合、つまり4以上の場合は、[if] タグと [endif] タグの間にあるスクリプトが実行される」
「んでも、注意しただけぢゃ、しょーがないもん」
「だからそこで [jump] タグを使うんだよ。わかりやすくするためにセパレータをつけてみたから、下のスクリプトを見てごらんよ」
(前略)
それでは、まずはお客様とお連れ様のサーネーム(姓)およびファーストネーム(名)を、こちらの宿泊カードにご記入ください。[l]
*inputname
;----------------------------------------------------
;▼男性の苗字を入力
[input name=f.sname1 prompt="あなた(男性)の姓をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.sname1.length>4"]\
[ct]\
苗字は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼男性の名前を入力
[input name=f.name1 prompt="あなた(男性)の名をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.name1.length>4"]\
[ct]\
名前は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼女性の苗字を入力
[input name=f.sname2 prompt="お連れ様(女性)の姓をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.sname2.length>4"]\
[ct]\
苗字は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼女性の名前を入力
[input name=f.name2 prompt="お連れ様(女性)の名をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.name2.length>4"]\
[ct]\
名前は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼車の名前を入力
[input name=f.carname prompt="キーをお預かりしますが、お車の型は?" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.carname1.length>7"]\
[ct]\
車の名前は6文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
お客様のお名前は[emb exp=f.sname1][emb exp=f.name1]様、
お連れ様のお名前は[emb exp=f.sname2][emb exp=f.name2]様、
お車は[emb exp=f.carname]でよろしいですか?
[delay speed=nowait]\
[locate y=360]\
[link target=*scene01]A.よろしい[endlink]
[link target=*return_name]B.よろしくない[endlink]\
[delay speed=user]\
[s]\
;--------------------------------------------
*return_name
[ct]\
[jump target=*inputname]\
[s]\
|
「んっきゃーーーーーーーーーーーーーーーーー!」
「ど、ど、ど、どうした!?」
「すきゃんてぃ、突然うちゅーからの電波を感じたもん! 神の啓示を受けたもん! 書くわよーーーーーーーーーーーーーーーーーーーーーー!」
「お、おい……」
「ばりばりばりばり!」
「……」
「できたもんねー見なさいよねもー! サンプルの名前を間違って消しちゃって、そのままなんにも入力しないでゲームを始めることがないようにしたもん! 変数がからっぽの時も入力をやり直させるようにしたもん! 見てよねもー! これでいーでしょもー!」
*opening
[ct]\
[layopt layer=message0 page=back visible=false]\
[image storage="ほてる.jpg" layer=base page=back]\
[trans time=2000 rule="trans1" vague=100]\
[wt]\
[ct]\
[backlay]\
[layopt layer=message0 page=back visible=true]\
[trans time=2000 rule="trans1" vague=100]\
[wt]\
謹啓[l]
チャーチホテル ChristmasEve へお越しいただきまして、真にありがとうございます。[l]
それでは、まずはお客様とお連れ様のサーネーム(姓)およびファーストネーム(名)を、こちらの宿泊カードにご記入ください。[l]
*inputname
;----------------------------------------------------
;▼男性の苗字を入力
[input name=f.sname1 prompt="あなた(男性)の姓をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.sname1.length>4"]\
[ct]\
苗字は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;入力文字列がカラの場合
[if exp="f.sname1==''"]\
[ct]\
苗字を入力してください。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼男性の名前を入力
[input name=f.name1 prompt="あなた(男性)の名をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.name1.length>4"]\
[ct]\
名前は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;入力文字列がカラの場合
[if exp="f.name1==''"]\
[ct]\
名前を入力してください。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼女性の苗字を入力
[input name=f.sname2 prompt="お連れ様(女性)の姓をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.sname2.length>4"]\
[ct]\
苗字は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;入力文字列がカラの場合
[if exp="f.sname2==''"]\
[ct]\
苗字を入力してください。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼女性の名前を入力
[input name=f.name2 prompt="お連れ様(女性)の名をご記帳下さい" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.name2.length>4"]\
[ct]\
名前は3文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;入力文字列がカラの場合
[if exp="f.name2==''"]\
[ct]\
名前を入力してください。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;▼車の名前を入力
[input name=f.carname prompt="キーをお預かりしますが、お車の型は?" title="名前の入力"]\
;----------------------------------------------------
;入力文字列が長い場合
[if exp="f.carname1.length>7"]\
[ct]\
車の名前は6文字までにして下さい。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
;入力文字列がカラの場合
[if exp="f.carname==''"]\
[ct]\
車の名前を入力してください。[p]
[jump target=*return_name]\
[endif]\
;----------------------------------------------------
お客様のお名前は[emb exp=f.sname1][emb exp=f.name1]様、
お連れ様のお名前は[emb exp=f.sname2][emb exp=f.name2]様、
お車は[emb exp=f.carname]でよろしいですか?
[delay speed=nowait]\
[locate y=360]\
[link target=*scene01]A.よろしい[endlink]
[link target=*return_name]B.よろしくない[endlink]\
[delay speed=user]\
[s]\
;--------------------------------------------
*return_name
[ct]\
[jump target=*inputname]\
[s]\
|
「す……素晴らしい……これぞ名前入力スクリプトの完全版だ……」
「きゃははーーーーーーーーーー! すきゃんてぃにわうちゅーからの電波がついてんもんねーーーーーー! んでもって、神様もついてんもんねーーーーーーー!」
「だ、大丈夫か? お前……」
「すきゃんてぃってば、だいてんさいぢゃんよもー! きゃははーいけいけいけいけー!」
「……」
練習日記 4日目 次へ
|