西宮 子供プログラミング教室 iTeen西宮津門校

ゲキムズscratch 2

難関要素① リストにランダムに牌を挿入する

まずリストとは何かの説明をさせていただきます。

リストとは文字や数字などを格納できる箱です。

例えば、おもちゃ箱という箱におもちゃを入れてみます。

すると中に入っているものは「車、マラカス、ロボット、ブロック」になります。それをscratchで組み立ててみますと、

こうなります。

おもちゃ箱の中に入れる順番がありまして、上から数える形になります。

それをランダムに入れていくというのが今回の麻雀の難しさです。

まず、コードの一部をお見せいたします。

とても難しいですね。

上から説明していきますと、136回「なにか」というものを「牌山」に挿入しています。これには意味がございまして、「なにか」というものは空白の役割をしているものです。

次に4回繰り返す以降の説明です。ramという名前の変数をに1~136のランダムな値を挿入しました(変数とはリストとは違い、一つの文字や数字を格納できるものです)。

今回はramに30を格納したとして考えます。

まず、牌山の30番目が「なにか」なら、牌山の30番目に「1」を挿入するというようなコードになっています。1というのはコスチュームの名前です(図1参照)。

次に、牌山にもし「なにか」以外のもの、つまりすでにほかの牌が入っているときの動作です。

牌山のram番目が「なにか」までramに1~136のランダムな値を挿入し続け、ランダムな値になったら(今回ramは45とします)、牌山の45番目に「1」を挿入する。というコードになっています。

つまり、牌の数が重複して欠けないようにしているわけです。

そして、すべての牌の種類分のコードを作成すると牌山のすべてがランダムに埋まっているようになります。

図1

 

これは麻雀では当たり前にやるようなことなのですが、プログラムで作成しようとするとかなり難しくなってしまうのです。