![](https://omouga-mama.com/wp-content/uploads/2021/04/cropped-arisu30.png)
Scratchでチーム分けをするプログラムを作ってみましょう。
学校では2チームに分かれてゲームをすることが多いですよね。
そんな時に役に立つプログラムです。
乱数、繰り返し、条件分岐を使った応用プログラミングです。
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://omouga-mama.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
チーム分けプログラムの紹介
まずは、どんなプログラムなのか使い方を紹介します。
![](https://omouga-mama.com/wp-content/uploads/2021/09/60275ab58ebd7cd921d15fb49998721b-1024x576.png)
名簿:チーム分けする人の名前を表示するリストです。
チームA:チームAに振り分けられた人の名前を表示するリストです。
チームB:チームBに振り分けられた人の名前を表示するリストです。
1.名前入力ボタンを押すと、画面下に名前を入力する枠が出てきます。
2.画面下に名前を入力して✓を押すと「名簿」に名前が追加されます。
3.2を繰り返してチーム分けしたい人の名前をすべて入力します。
4.チーム分けボタンを押します。
5.名簿の中からランダムにチームA、Bに振り分けます。これで完了です。
6.リセットボタンを押すと名前をすべて消してやり直しができます。
![](https://www12.a8.net/0.gif?a8mat=3HR4JZ+F6JY42+E0Q+1BNYOX)
プログラムを解説
どんなプログラムを作ったの解説していきます。
スプライト
このプログラムでは4つのスプライトを作成しました。
![](https://omouga-mama.com/wp-content/uploads/2021/09/b9f70594cc0983d44f468d3fb09a7be7.png)
猫のキャラクタ:「名前を入力してね」とメッセージを表示して、名前の入力を受け付ける役割です。
名前入力ボタン:名前入力を始めるときに押します。猫のキャラクタの名前入力を受け付けるプログラムを実行します。
チーム分けボタン:このボタンを押すと、名簿からランダムで選んでチームA、Bに順番に名前を移していきます。
リセットボタン:名簿、チームA,Bの名前をすべて消します。
次に、各スプライトのプログラムを解説します。
名前入力ボタン
![](https://omouga-mama.com/wp-content/uploads/2021/09/37923e4050d09efd390809af417b09e1.png)
名前入力を始めるためのプログラムを作ります。
このスプライトが押されたときにプログラムを開始するように作ります。
「このスプライトが押されたとき」の部品を使います。
実際には猫のスプライトにプログラムを作ったので、そのプログラムを呼び出すだけのプログラムを作りました。
猫のキャラクタ
![](https://omouga-mama.com/wp-content/uploads/2021/09/67a653cea484dc54a66011c561f58599.png)
「名前入力」のスプライトから呼び出されるプログラムです。
「名前入力」のスプライトで「名前入力を送る」が実行されたときに、猫のすプライt歩にある「名前入力を受け取ったとき」のプログラムが実行されます。
猫のキャラクタが「名前を入力してね」をしゃべった後、入力欄を表示して待ちます。
入力欄に名前が入力されて、✓ボタンが押されたら次のプログラムが動きます。
「答え」つまり、入力された名前を「名簿」に追加します。
これを永遠に繰り返すプログラムです。
チーム分けボタン
![](https://omouga-mama.com/wp-content/uploads/2021/09/75fa88ea3db61802b5426a10eaaaa93b.png)
このスプライトが押されたときに開始するプログラムを作成します。
少しややこしいですが、頑張りましょう。
まず、全体を「名簿の長さ<1まで繰り返す」という部品で囲っています。
このプログラムでは名簿からランダムに一人を選んでチームAまたはBにコピーして、名簿からその人を消すプログラムになっています。
「名簿の長さ<1まで繰り返す」 というところで、名簿の名前がゼロになるまで繰り返すという事を表現しています。
ちょっとわかりにくい場合は 「名簿の長さ=0まで繰り返す」と作っても同じです。
「選ばれた人を1から名簿の長さまでの乱数にする」というプログラムではたった1行で作っていますが次の様なことをしています。
1.1から名簿の最後の人の番号 の範囲でランダムに数字を選ぶ
2.変数「選ばれた人」にランダムに選んだ番号を入れる。
「名簿の選ばれた人番目をチームAに追加する」
ここでは、変数「選ばれた人」に入っている番号の人を名簿から選んでチームAににコピーしています。
「名簿の選ばれた人を番目を削除する」では、チームAにコピーした人を名簿から消します。
これによって名簿のリストが一人減ります。
次にチームBにコピーする人を選ぶプログラムを作ります。
その前に、名簿にまだ名前が残っているかをチェックします。
それが「もし名簿の長さ>0なら」のプログラムです。
名簿に名前がない状態で、チームBに名前をコピーすることはできません。
また、名簿から名前を消す人もいません。
このような状態でプログラムが実行されるとエラーになって動かなくなったり、変な動きをします。
そのため、プログラムを実行する前の確認処理です。
これ以降の処理はチームAに名前を追加する場合と同じです。
ランダムに数字を選んで、その人をチームBに追加します。
その後、名簿から名前を消します。
その後、また繰り返し処理の先頭「 名簿の長さ<1まで繰り返す 」のところまで戻ってまた一連のプログラムが実行されます。
名簿の名前が1未満(つまり0)になっていればプログラムが完了になります。
リセットボタン
![](https://omouga-mama.com/wp-content/uploads/2021/09/be6b94b3bdce14cb7e249e36d451f52a.png)
名簿、チームA、チームBに入っている名前をすべて消して、初期状態に戻します。
実行してみた
![](https://omouga-mama.com/wp-content/uploads/2021/09/d63d51029abc982d1f6cc1a3acf6268b-1024x770.png)
名前入力ボタンを押すと「名前を入力してね」と表示して、名前入力を待ちます。
![](https://omouga-mama.com/wp-content/uploads/2021/09/42dce7e45207fe41c0ad788128d43915-1024x768.png)
チーム分けしたい人に名前を入力します。
今回は、フルーツの名前を5個入力しました。
![](https://omouga-mama.com/wp-content/uploads/2021/09/745b490fcd281f25136480d7b7f5754e-1024x766.png)
チーム分けボタンを押すとチームAとチームBに生を振り分けて、名簿から名前が消えました。
このプログラムではチームA、チームBの順番に名前を入れていくので、奇数人の場合は必ずチームAが一人多くなります。
コメント