こんにちは、沖縄市のプログラミング教室「エイド IT.KIDS」のミチノリです。今日も子供たちと一緒に楽しくプログラミング学習を行っています。今日はトランプを使ったカードゲームとScratch(スクラッチ)について簡単に書きたいと思います。
 
エイドでは、Scratch(スクラッチ)を使ってゲームを作るプログラミング学習を中心にしながら、様々な要素を授業に取り入れています。大人の場合はまだしも、子供たちは同じ教材だけで学習をしていると、すぐに飽きてしまう場合があります。今回は2週間に渡ってカードゲームの「ブラックジャック」をテーマにしてプログラミング学習を行いました。
 
ブラックジャック(BJ)は、トランプを使って行うカードゲームです。プレイヤーがディーラーと勝負をします。ディーラーがカードを配り、カードの合計値が21になると最も強く、ディーラーとプレイヤーでカードの合計値を競います。手札にあるカードが22を超えるとバーストといって負けになります。(※本記事ではブラックジャックの詳しいルール説明は省きますね)
 
まずは授業のはじめにパソコンで利用出来る無料のブラックジャックゲームをプレイしてルールを覚えます。どのタイミングでヒットをするべきか?(カードを追加する事)どのタイミングでスタンドするべきか?(勝負の合図)最初に配られた2枚のカードの合計値がいくつならバーストしやすくなってしまうのか?など、ブラックジャックのルールを覚えていきます。全員がパソコン版のブラックジャックゲームで基本的なルールを覚えたら、おもちゃのお金(ダイソーで買ってきました)をチップ代わりにしてブラックジャックをプレイし、完全にルールを覚えていきます。
 

ブラックジャックのルールを覚えたらスクラッチで作ってみよう

ブラックジャックは子供のプログラミング学習言語として人気の高いScratch(スクラッチ)でも、ゲームとして作る事が出来ます。ブラックジャックのルールを完全再現するのは、小学生には難易度が高いので、作りやすいように簡易的なルールに変更をしていきます。
 
プレイヤーとディーラーと審判のキャラクターを配置し、スタンドとヒットのボタンを作ります。通常のブラックジャックではディーラーが審判の役割を果たしますが、今回は勝敗の判定部分のプログラミングを分かりやすくする為に審判を配置しました。
 
まずはプレイヤーのプログラムを作ります。はじめにプレイヤーとプレイヤー合計という変数を作ります。配ったカードの数値を記録するためにリストを作成します。旗が押されたらプレイヤーの変数に1から13までの乱数を入れて、12と13が出た場合は10に変えます。
 
通常のブラックジャックゲームの場合は、Aが出たら1か11を選べますが、今回は簡易版として1も11も出現するようにしています。このプログラムだと11が2回出てしまい「22」になってバーストする場合があるので、その修正点(バグ)にも気づいてプログラムの修正が出来ると最高だと思います。
 

色々とかなり端折りますが、プレイヤーのプログラムを作ったら、ディーラーにも同様なプログラミングを行っていきます。繰り返しになりますが今回作ってみたのは簡易的で変則的なブラックジャックですのでご了承下さい!

 

プレイヤーとディーラーのプログラムを作った後は、ヒットのボタンをプログラミングします。今回は変数に乱数をあててからリストに挿入しているだけなので、ほぼ同じようなプログラムになっています。プレイヤーの合計値が21を超えている場合はバーストのメッセージを審判に送り勝敗を判断させるようにしています。
 
こちらは審判のプログラムです。バーストのメッセージを受け取った場合には、どちらがバーストしているのかを判定します。プレイヤーもディーラーもバーストしていない場合は、通常のメッセージを送り、どちらが勝っているのかを判断します。引き分けの場合も入れていきます。子供たちが理解しやすいように出来るだけシンプルにしているつもりです。
 
今回ご紹介したサンプルは、変則的なブラックジャックゲームです。子供たちと一緒にブラックジャックのルールを把握し、そのゲーム性を体験してから、Scratchでも作ってみるという一連の流れで授業をしてみましたが、とても楽しかったです。
 
どのように考えればゲームを再現出来るのか?という今回のような体験は、プログラミング学習においてとても大切な事だと思っています。ルールを把握する事で、作りたいモノの仕様を理解する事が出来ますし、思わぬエラーもたくさん発生するので、それらを修正し続けることで、エラーを予測して失敗しづらくもなります。

エイドでは、月4回(1回1時間)のコースで通ってくれている生徒がほとんどを占めていますので、彼らがプログラミング学習に使える時間は年間でも50時間程度しかありません。とても短い学習時間です。

そんな限られた時間の中で、いかに楽しく、かつより良い学習体験をしてもらえるかを日々考えつづけながら、今回のような新たな学習テーマ・カリキュラムを模索し続けようと思います。

今日は以上です!