3.2 入力ボックスの作成

今回の目的
 プレイヤー側から、文字列や数字を入力できるようにします。

 入力したデータを変数に格納する際の注意点に気をつけましょう。

 


文字列の入力
 主人公の名前などをプレイヤー側に入力させたい場合はテキスト入力ボックスを使います。

*define

clickstr "」。!?",2

game
*start

あなたの名前を教えてください。

input $0,"あなたの名前は?(全角文字)","ここに入力",16,1

こんにちは、$0さん。

end
 
 こんなダイアログが出現。名前の入力を求めてきました。

 「input」を使うと入力ボックスが表示されます。

 「input」の後には、左から順に
 「文字変数」「説明文」「初期の文字列」「最大文字数」「全角フラグ
 を設定します。

 入力した文字列は「文字変数」の中に格納されます。

 「最大文字数」は半角入力時の話なので、全角入力時は倍の値を入れます。
 例えば、全角8文字までにしたいときは「16」と指定します。

 「全角フラグ」は、全角入力のみ許可するなら「1」、半角入力も許可するなら「0」を指定します。

 
 「リュウジ」と入力すると…

 
 文字変数には「リュウジ」が格納されました。

 


数値を入力
 「input」では、文字変数に文字列を入力することしか出来ません。
 しかし場合によっては数字変数に数値を入力させたいこともあります。

 そんなときは「atoi」を使って文字列を数値に変えましょう。

*define

clickstr "」。!?",2

game
*start

mov %0,1000

所持金は%0円です。
いくら使いますか。

input $0,"いくら使いますか?(半角数字)","",16,0

atoi %1,$0

%1円使いました。

sub %0,%1
所持金は%0円です。

end
 
 仮に100を入力します。

 「input」で入力されるものは、あくまで文字列です。
 このとき入力した「100」も数値ではなく文字列として認識されています。

 従って、このままでは数字変数に「100」を格納することは出来ません。

 「atoi」を使うと、文字列数値に変換することが出来ます。

 「atoi」の後には、「数字変数」「文字変数」を指定します。
 すると文字変数内の文字列が、数値として数字変数に格納されます。

 文字変数の変わりに" "でくくった文字列を直接書いても構いません。

 
 数値に変換すれば、自由に計算することが出来ます。



 「atoi」の逆である「itoa」という命令もあります。

 「itoa」の後には、「文字変数」「数字変数」を指定します。
 すると数字変数内の数値が、文字列として文字変数に格納されます。

 


文字列を比較
 ある質問を「input」の入力によって答えさせた場合、
 入力された文字列がこちらが意図したもと同じかどうかを確認する必要があります。

*define

clickstr "」。!?",2

game
*start

mov %0,1000

ワンワンと鳴く動物は何でしょう?

input $0,"ワンワンと鳴く動物は?(全角ひらがな)","",16,1

cmp %0,$0,"いぬ"

if %0=0 正解です。
if %0!=0 不正解です。正解は「いぬ_」でした。

end
 
 正しいと思う解答を入力します。

  
 「いぬ」と答えれば左、「いぬ」以外を答えれば右のように表示されます。

 「cmp」は2つ文字列を比較する命令です。

 「cmp」の後には、左から順に
 「数字変数」「文字変数」または「文字列」を2つ指定します。

 この2つの文字列が等しければ「数字変数」に「0」が代入されます。
 等しくなければ「数字変数」には0以外の数値が代入されます。

 


まとめ
 謎解き系のゲームでは、入力ボックスはお約束のアイテムです。
 その他にも、面白いゲームシステムを作ることが出来そうですね。

 次節は、クリック・スキップの監視についてです。

 


前へ    TOPへ戻る    次へ