2-7.ボタンで簡単なリアクション

ようやくユーザー側が介入できます。はい。


ユーザーの操作を受け付ける物として、最も基本的なのがボタンですね。ボタンがクリックされたら何らかのアクションをする、というものです。構成をどこでトチ狂ったか無茶苦茶になっているので中途半端なところですが。

ボタンを配置するにはbutton命令を使います。そのまんまですね。

    button goto/gosub "caption", *label

"caption" : ボタンに表示する文字
*label : ボタンが押されたときの飛び先を指定

これを見て分かると思いますが、button命令を使うにはラベルの使用が必須です。ボタンが押されたらこうする、といった処理を1つで書くことは出来ません。不便なのかなんなのやら。"goto/gosub"については省略して構いません。それについては、今はあまり関係ないので説明しません。

さて、ボタンに表示させる文字は何でも良いのです。まずはやってみましょう。


    button "押せ", *a
    stop

*a
    mes "押したなコノヤロウ!"

さてこんな例を出したのはどこのひねくれ者でしょうね。――このふざけたサンプル通りに実行した凄い人がいるなら、画面に『押せ』というボタンが表示されます。そして、そのボタンを押すと押したなコノヤロウ!という何ともひねくれた文章が表示されます。押せと言ったくせに押したら文句つけてくるんですよ? 最悪ですね。この例を考えた人は。そういうわけで皆さんはもっとまともな文章にしてください。

ボタンはオブジェクトと呼ばれるものの1つに入ります。オブジェクトは画面中に最大4096個配置することができます。つまり、ボタンだけを表示させた場合、最大で4096個のボタンを配置することが出来ると言うことです。そうなる場面があったら凄いんですが。――言いたいのはつまりボタンは1画面中に複数配置できるということです。


    mes "あなたが落としたのは……"
    button "金の斧", *a
    button "銀の斧", *b
    button "普通の斧", *c
    stop

*a
    mes "てめえ金の斧なんて落としてねえじゃねえかこの嘘つきが"
    stop

*b
    mes "Silver ax was not found."
    stop

*c
    mes "正直者な貴方を某ネズミの国へご招待します――"
    stop

もう何が何だか分かりませんね。――言いたいことは、このようにして複数の選択肢をユーザーに選ばせることが出来る、ということです。ところでやっぱり例の中にある文章がひねくれまくっているのですが、本当にこれは一体誰が書いたんでしょうね。

2つめの例だと、button "普通の斧", *cの直後と、飛び先にあるmes命令の直後にstop命令があります。これを入れておかないと、次のラベルの所まで実行してしまいます。例えば『金の斧』を選んだとして、stop命令が無かったら、次の行へと進んでしまい、*b*cも実行してしまいます。1つめの例だと押したら飛んでその先が無いので大丈夫だったのですが、複数のボタン・複数のラベルを使う際には十分注意してください。

さて、これで第2章も終わりです。次は基本編になります。超基本と基本の違いは正直僕にも分かりません。


Last Modified: 2008-08-15