ビスケット(Viscuit)で3×3のビンゴカードを作るプログラムを作ってみました。
何度でも使えるので紙の節約にもなりますし、数字を動物や果物に変えたりしてオリジナルのカードを作ることも可能です。
また、この作品を通してランダムな動きのメガネの作り方が分かります。
ビスケットが初めての方は、こちらの記事からお読みください。
今回作ったプログラム「ビンゴカード」
- 3×3のマスに1~9の数字をランダムに配置。
- グレーのワクをおすと、ワクが赤くなる。
- 赤いワクがタテ・ヨコ・ナナメいずれか3つ並んだとき、
ビンゴ成立!「BINGO」の文字が点めつする。
必要な部品と配置
必要な部品
- ?マーク
- 1~9の数字
- グレーのワク
- 赤いワク
- グレーの「BINGO」
- オレンジの「BINGO」
- オレンジ(光っている)の「BINGO」
ステージの設定
- 方眼紙 … 一番大きいサイズ
メガネ
ビンゴカードを作る動き
3×3のマスに1~9の数字をランダムに配置します。
ステージ上に「1」と「?」があるとき、
「?」を「1」に変える。
元の位置にあった「1」を消す。
1~9までの数字分つくります。
数字をチェックする動き
紙のビンゴカードでは、ちゅう選された数字がカードにあったら穴をあけますね。
タブレットに穴をあけるわけにはいかないので、穴をあけるかわりにワクの色が変わるようにします。
ビンゴが成立したときの動き
ビンゴが成立したとき、「BINGO」の文字が点めつします。
赤いワクがヨコに3つ並んだとき、「BINGO」の色が変わる。
赤いワクがタテに3つ並んだとき、「BINGO」の色が変わる。
赤いワクがナナメ(右上~左下)に3つ並んだとき、「BINGO」の色が変わる。
赤いワクがナナメ(左上~右下)に3つ並んだとき、「BINGO」の色が変わる。
オレンジの「BINGO」とオレンジ(光っている)の「BINGO」が交ごに表示され、点めつして見えるようになります。
解説:数字をダブらせないでランダムに配置するには
ランダムな動きをつけるメガネ(~たり)
左側の状態が同じメガネをいくつも作って命令すると、「~たり」という意味になりランダムな動きをつけることができます。
つまりきまりがなくデタラメということです。
例えばクラゲが「上に動いたり」「下に動いたり」するメガネ。
ビスケットを最初にさわった時に作った人も多いと思います。
「上に動いたり」「下に動いたり」するメガネのどちらかが、ランダムに実行されています。
このメガネを応用して、「?」マークをランダムな数字に変えるメガネを作ります。
- 「?」が1に変わったり、
- 「?」が2に変わったり、
- 「?」が3に変わったりする。
動かしてみると、「?」マークが1~3のランダムな数字に変わりました。
でも数字がダブってしまいました。
数字がダブらないように変更
今回のビンゴカードでは、数字がダブらないように配置したいですね。
そこで、下のようにメガネを変えてみました。
ステージに「?」マークがある かつ 1の下に青線があるとき、
「?」マークを1に変える。
1を消して青線をひとつ右に動かす。
1~9までの数字分つくります。
メガネの左側に「1の下に青線があるとき」という条件と、右側に「1を消して青線をひとつ右に動かす」という動きを足して、1から9まで順番に1回だけ実行されるようにしてみました。
一回でランダムに並べる
…と、ここまで作ってTwitterに投稿したらビスケットの生みの親である原田ハカセからアドバイスをいただきました。
判定までついていて素晴らしいですね.実は最初に数を並べる部分ですが.青い線を全ての数字の下においておいて,メガネでは消えるようにすれば,一回でランダムに並びます.この並列度がビスケットの特徴なんですよね. pic.twitter.com/HrmOScv5Ez
— 原田 康徳 (@viscuit) June 30, 2020
開発者の方から直接コメントをいただけるなんて、なんていい時代!
「プログラムの命令は1つずつ順番に」という固定観念があって、「同時に」という発想にいたりませんでした。
ビスケットは発想力もきたえられます。
そして修正へ・・・
ふと「青線なくても大丈夫かな?」と思い青線を消して試してみた結果、数字がダブりませんでした。
青線は「?」から数字に変換した後、変換後の数字がまた判定されてしまうことを防ぐ役割がありました。
なのでうまく動かなくなるかなと思っていたのですが……うまくいっちゃいました。
なんだか裏ワザを発見した気分。
青線も消えてだいぶスッキリしました!
まとめ
結果が同じでも、そこへたどり着く方法はひとつじゃない。
色々な方法を試してみて、効率や分かりやすさを比べてみて、どの方法が一番よいか考えて選んでみましょう。
ビンゴの数字をちゅう選するプログラムも作りました!