混ぜこぜ俳句



テキスト・フィールドに並んだ有名な俳句の、上句・中句・下句を混ぜこぜにして五七五という形式だけの句を作り、上のテキスト・フィールドに表示するプログラムです。プログラムを理解したら『「誰々が」「何処何処で」「何をした」』という文章に作り変えて、遊んでみてください。

LiveCodeのメッセージ・ボックスに

go stack url "http://kenjikojima.com/livecode/RPi/mazekozeHaiku.livecode"

このスクリプト「go stack url ...」を打ち込んで、マウスをメッセージ・ボックスに入れたまま「return / enter」キーを叩いてください。図のスタックがLiveCodeの開発環境の中にダウンロードされます。スタックを動かすには、ツール・ボックスのトップ左の矢印「Run(Browse)」を選んで操作します。このスタックはMacOS版・Windows版のLiveCodeからでもダウンロードして動かす事ができます。ダウンロードしたスタックは始め、有名俳句のリストから1句選ばれてトップにあるテキスト・フィールドに表示されています。リストの句をクリックすると、その句がトップのフィールドに表示されます。スタックの右上にあるボタン「混ぜこぜ俳句」のクリックで、下のリストから上句・中句・下句が無作為に選ばれて1句トップのフィールドに表示されます。


characters / words / lines

LiveCodeでは文字を「character」という言葉でカウントします。「秋深き」は「3 characters」です。メッセージ・ボックスに下のスクリプトを入れて「return / enter」キーを叩くと、「3」が返されます。

put the number of characters of "秋深き"

補足:スペースも1文字と数えるので「あい うえお」は「6 characters」です 文字数を数える場合は複数で「characters」または「chars(短縮形)」にする

もともとLiveCodeの「character 文字」は、英語の文字数を数える言葉です。同じような言葉で英語の語数を数えるには「word 語」を使います。 「word」というカウント方は、語と語の間のスペースを区切りとして数えますが、日本語では語の区切りを使わない表記なので、通常「word」で数える方法は採りません。しかしここでは上句・中句・下句を分けるスペースを「word」の区切りと考えてプログラムを書いて行きます。次に進む前にもう1つ文を数える単位を説明しておきます。LiveCodeでは文の行数は「line」で数えます。

put the number of lines of field "俳句リスト"

フィールド名「俳句リスト」の行数、「lines」と複数にする


 

「File」メニューから「New Mainstack」を選んで、メインスタックをデスクトップに作ってください。ツール・ボックスにあるフィールド「Text Entry Field(上図左赤丸)」をスタック内のカード上トップにドラッグ&ドロップして、フィールドをまだ選んでいる状態でメニュー・アイコンの「Inspector」をクリックすると、オブジェクト・インスペクターが開かれます。オブジェクト・インスペクターはオブジェクトが持っている主要なプロパティ(property 特性、属性)を変えるパレットです。始めにインスペクターの「Basic Property」でフィールドの「Name 名前」を「混ぜこぜ俳句」にします(上図右)。

 

次にインスペクターのトップにある「Basic Property」をクリックするとメニューが出ますから(上図左)、一番下の「Text Formattting」を開きます(上図右)。「Font」はデフォルトのままで空白にします。「Size」は「22」にしました。「Style」もデフォルトのままで「P」つまり「Plain」です。「Align」は「center」にします。フィールド「混ぜこぜ俳句」のサイズは、ツールパレットの最上部右の矢印「Edit Tool」で、適当な大きさに広げてください。

 

下にある俳句のリストのフィールドも、フィールド「Text Entry Field(上図左赤丸)」をスタックのトップにドラッグ&ドロップして、リストを入れるサイズに大きくしたらフィールドが選ばれた状態でメニュー・アイコンの「Inspector」をクリックしてください。インスペクターの「Name」は「俳句リスト」にします。左側の「Don't wrap」と「Lock text」にチェック・マークを入れてください。右側の「Focusable」と「Focus border」のチェック・マークは外します(上図左赤の囲み)。テキストの「Size」は「18」、「Alighn」は「Center」にします。フィールドのサイズも適当に広げてください。これでカーソルはテキスト・フィールドに入らなくなって、クリックで周囲のボーダーの変化もなくなって、フィールドのテキストをクリックすると、その行がフィールド「混ぜこぜ俳句」に書き込まれる準備ができました。

フィールド「俳句リスト」の中には、クリックされた時に働くスクリプトが必要です。テキスト・フィールド「俳句リスト」をセレクトして、アイコン・メニューの「Code」を選ぶか、テキスト・フィールド「俳句リスト」の右クリックで出るメニューの一番上にある「Edit Script」を選ぶと、フィールド「俳句リスト」のスクリプト・エディターが出ます。以下のスクリプトを書き込みます。

on mouseUp
   put the text of clickLine into fld "混ぜこぜ俳句"
end mouseUp

意味はマウスでテキスト・フィールドをクリック(mouseUp)すると、「the clickLine」でそれがフィールドの番号と何行目のライン(line)か返します。その行のテキストを(the text of clickLine)を、フィールド「混ぜこぜ俳句」に入れなさい(put)と言う指示です。

on mouseUp
   put the clickLine
end mouseUp

もしフィールドの中のスクリプトが「put the clickLine」ですと、「line 5 of field 2」のようにクリックしたフィールドの行数が、メッセージ・ボックスに返されます。「field 2」はフィールド・オブジェクトのレイヤーが下から数えて「2番目」の意味です。「field 1」は先に作ったフィールド「混ぜこぜ俳句」です。

 

次は「混ぜこぜ俳句」を作るボタンです。ツール・ボックスから「Push button(上左図赤丸)」をトップにあるフィールド「混ぜこぜ俳句」の右に置きます。今度は「name 名前」と「Label レーベル」に書き込みます。名前は「混ぜこぜる」、レーベルは「混ぜこぜ俳句」にしました。レーベル(Label)はボタンに表示されます。オブジェクトに付ける名前(name)は、スクリプト中で使うボタン名です(このスタックではスクリプト中でこのボタン名は使っていません)。


any / random

on mouseUp
   get fld "俳句リスト"  -- フィールド「俳句リスト」の全ての文を「it」に入れます。
   put word 1 of any line of it &" "&  word 2 of any line of it &" "& \
     word 3 of any line of it into fld "混ぜこぜ俳句"
end mouseUp	

putから始まる行は長いので「バックスラッシュ \」でつないで行換えしています
以下はスクリプトの説明:

get fld "俳句リスト"
ボタンが「マウスアップ mouseUp」されたら、フィールド「俳句リスト」の全ての文を「it」に入れます。「get」は「it」という「バリアブル variable(収納容器のようなもの)」に、オブジェクトの「バリュー value(内容、値)」を入れます(この場合はフィールドの文章)。

put word 1 of any line of it &" "&
「any」は無作為に選んだどれかという意味です。「it」に入っている文章の「どれか any」の「行 line」の「語1 word 1」と「スペース " "」と(&)

word 2 of any line of it &" "&
「it」に入っている文章の「どれか any」の「行 line」の「語2 word 2」と「スペース " "」と(&)

 word 3 of any line of it into fld "混ぜこぜ俳句"
「it」に入っている文章の「どれか any」の「行 line」の「語3 word 3」をフィールド「混ぜこぜ俳句」に入れる。

これで「混ぜこぜ俳句」が作られます。

今まで使ってきた「on mouseUp」で始まり「end mouseUp」でステートメントから抜けるような指示のことを、「メッセージ・ハンドラー」と呼びます。「mouseUp」はマウスの動作をきっかけとしてステートメントが働きます。マウスの動作以外にも、スタックが開かれた時「openStack」や、カードが開かれた時「openCard」等があります。

このスタックでは、スタックが開かれた時スタックのカード1(card 1)にあるメッセージ・ハンドラー「openCard」のスクリプトが働いて、俳句リストの一句を作者名ごとトップのフィールド「混ぜこぜ俳句」に入れます。カード・スクリプト(Card Script)のエディターは「オブジェクト Object」メニューの「Card Script カード・スクリプト」で開きます(下図)。



on openCard  --カードが開かれた時スクリプトが働く
   put fld "俳句リスト" into 俳句
   sort lines of 俳句 by random(the number of lines of 俳句)
   put 俳句 into fld "俳句リスト"
   put any line of 俳句 into fld "混ぜこぜ俳句"
end openCard

カードが開かれた時「on openCard」でスクリプトが働きます。

put fld "俳句リスト" into 俳句
フィールド「俳句リスト」の文を丸ごとバリアブル(variable)「俳句」に入れる。バリアブル(variable)は日本語の翻訳で「変数」という言葉が与えられていますが、数とは限らないことがほとんどなので、このLiveCode入門では「バリアブル(variable)」と呼びます。

sort lines of 俳句 by random(the number of lines of 俳句)
「sort ソート」はコンピュータ用語のソート(整列)です。 バリアブル「俳句」に入っている文の行(lines)を、「俳句」の行の数だけランダムで整列させます。「sort lines of バリアブル(値を入れる容器) by random(数)」 とした場合、「random( )」のカッコの中の数の回数回、ランダムにソートします。

random(20)
the random of 20
LiveCodeでこの2行はまったく同じ内容のものです。「random(正の整数)」は、1からカッコの中の数字を最大として、その中から無作為に選んだ数を1つ返します。「the random of 正の整数」も、最後に付いた数字を最大として無作為に選んだ数を1つ返します。

put 俳句 into fld "俳句リスト"
ランダムにソートされたバリアブル「俳句」をフィールド「俳句リスト」に入れる。

以上が「混ぜこぜ俳句」に書き込んだスクリプトの全てです。



ページトップに行く

統合開発環境:
LiveCode 6 プログラミング 初心者開発入門




ⓒ 小島健治 / Kenji Kojima