
<写真1:Scratchで質問した文字列を変数とリストで利用する>
前回、変数の使い方を学んだが、今回は複数の変数を一つにまとめたような入れ物のリストを学ぶ。
また、ユーザーに質問をして、入力させた答えを利用することも同時に学ぶことにする。
教科書では使い方の説明だけなので、アイデアを考えて簡単なプログラムを作ってみたい。
- 変数:数値や文字列を記憶しておく入れ物。
- リスト:数値や文字列を「複数個」記憶しておく入れ物。
- 質問と答え:ユーザーに質問して入力されたものは変数「答え」(answer)に記憶される。
これらを使ってできるプログラムは、どんなものがあるだろう?今の私にできるのか。(^^;)
質問と変数とリストで俳句を作れないか?
例えば、5文字の言葉を6回、7文字の言葉を3回質問して、それらをランダムに組み合わせて3つの俳句を作るとか。
でも、全部ユーザーが答えては、出来上がりがある程度想像できてしまうし、考えるのも大変だ。だから、ユーザーの負担を軽くして、意外性を高めるために、ユーザーには5文字だけ答えさせて、残りは事前に用意しておくのはどうだろう?
ユーザーには上の句の5文字だけ質問して、残りの中の句の7文字、下の句の5文字は、出来るだけ関連性がない言葉を前もって設定しておく。
季語も必要なので、とりあえず7文字の中に季節の言葉を入れて置くことにしよう。
俳句の季語についての知識は持っていないので、この辺は適当でいいだろう。
中の句と下の句を作ってみた
変数は、「上の句」「中の句」「下の句」の3つ作った。質問の「答え」(answer)はScratchに最初から備わっていて、質問とセットになっている。
中の句と下の句はいくつでも設定できるが、ここでは5個づつ作ってそれぞれのリストに加える。
季語は知らないので、季節を思い浮かべて四季を感じさせるような言葉にしたつもりだ。

<写真2:中の句と下の句を作って設定>
質問した上の句を、中の句、下の句と組み合わせる
上の句をユーザーに質問すると、その文字列は変数「答え」(answer)に入る。
もし「答え」(answer)が空白だったら、質問を止める。空白でなければ入力した上の句を、設定してある中の句と下の句とランダムに組み合わせて、5秒間だけ表示する。
中の句と下の句のリストの言葉を、ランダム関数(1-5)によって選んで、入力した上の句と組み合わせている。

<写真3:質問した上の句を、中の句、下の句と組み合わせる>
完成した句を消去したり閲覧する
完成した句を全部消去したい場合や、作った句をゆっくり見たい時のために、それぞれキーボードのイベントとしてプログラムした。
全部消去する時は「d」キー、完成句のリストから指定して見たい場合はスペースキーを押して操作できる。
また、Scratchのリストは、リストの上で右クリックすると、リストの中のものをテキストデータで出力(Export)することができる。
ちなみに、外部で作ったテキストをリストにインポート(import)することもできる。

<写真4:完成した句を消去したり閲覧する>
完成した句をテキストに出力
完成した句をテキストに出力(エキスポート)して眺めてみると、同じ句が選ばれていて、あまりランダムに発生していないのが不満に感じた。
もっと完璧にランダムに発生させる方法は、Scratchにはないのだろうか?

<写真5:完成した句をテキストに出力 >
コメント