【ビスケット(Viscuit)】数字がランダムにならぶ「ビンゴカード」をプログラミング!

ビスケット(Viscuit)で3×3のビンゴカードを作るプログラムを作ってみました。

何度でも使えるので紙の節約にもなりますし、数字を動物や果物に変えたりしてオリジナルのカードを作ることも可能です。

また、この作品を通してランダムな動きのメガネの作り方が分かります。

ビスケットが初めての方は、こちらの記事からお読みください。

 

スポンサーリンク

今回作ったプログラム「ビンゴカード」

ビンゴカードを作るプログラム

  1. 3×3のマスに1~9の数字をランダムに配置。
  2. グレーのワクをおすと、枠が赤くなる。
  3. 赤いワクがタテ・ヨコ・ナナメいずれか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」に変える。
オレンジ(光っている)の「BINGO」をオレンジの「BINGO」に変える。

オレンジの「BINGO」とオレンジ(光っている)の「BINGO」が交ごに表示され、点めつして見えるようになります。

 

スポンサーリンク

解説:数字をダブらせないでランダムに配置するには

ランダムな動きをつけるメガネ(~たり)

左側の状態が同じメガネをいくつも作って命令すると、「~たり」という意味になりランダムな動きをつけることができます

ランダムとは「考えて決めるのではなく、ぐうぜんにまかせること。」
つまりきまりがなくデタラメということです。

 

例えばクラゲが「上に動いたり」「下に動いたり」するメガネ。

ビスケットを最初にさわった時に作った人も多いと思います。

クラゲが上にいったり下にいったりするメガネ

「上に動いたり」「下に動いたり」するメガネのどちらかがランダムに実行されています。

 

このメガネを応用して、「?」マークをランダムな数字に変えるメガネを作ります。

ランダムな数字を出すメガネ

  • 「?」が1にかわったり、
  • 「?」が2にかわったり、
  • 「?」が3にかわったりする。

動かしてみると、「?」マークが1~3のランダムな数字に変わりました。

でも数字がダブってしまいました。

 

数字がダブらないように変更

今回のビンゴカードでは数字がダブらないように配置したいですね。

そこで下のようにメガネを変更してみました。

1から9順番に1回だけ実行されるメガネ

※割れたメガネ※
ステージに「?」マークがある かつ 1の下に青線があるとき、
「?」マークを1に変える。
1を消して青線をひとつ右に動かす。

1~9までの数字分つくります。

メガネの左側に「1の下に青線があるとき」という条件と、右側に「1を消して青線をひとつ右に動かす」という動きを足して、1から9まで順番に1回だけ実行されるようにしてみました。

 

一回でランダムに並べる

…と、ここまで作ってTwitterに投稿したらビスケットの生みの親である原田ハカセからアドバイスをいただきました。

開発者の方から直接コメントをいただけるなんて、なんていい時代!

「プログラムの命令は1つずつ順番に」という固定観念があって、「同時に」という発想にいたりませんでした。

ビスケットは発想力もきたえられる。。。

 

そして修正へ・・・

ふと「青線なくても大丈夫かな?」と思い青線を消して試してみた結果、数字がダブりませんでした。

1から9順番に1回だけ実行されるメガネ・改

青線は「?」から数字に変換した後、変換後の数字がまた判定されてしまうことを防ぐ役割がありました。

なのでうまく動かなくなるかなと思っていたのですが……うまくいっちゃいました。

なんだか裏ワザを発見した気分。

青線も消えてだいぶスッキリしました!

 

まとめ

結果が同じでも、そこへたどり着く方法はひとつじゃない。

色々な方法を試してみて、効率や分かりやすさを比べてみて、どの方法が一番よいか考えて選んでみましょう。

ビンゴの数字をちゅう選するプログラムも作りました!

 

\4歳からはじめられるプログラミング!/
タイトルとURLをコピーしました