Hoicos Blog

Author: あぼかど

Scratchで2人ブラックジャックを作ろう[3]

Hoicosプログラミング教室

2人で遊べる楽しいBJ(ブラックジャック)をオリジナルで作って遊ぼう!
0391146c7586b8f682d5feb60d2c6b4d - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

みなさんこんにちは。色々勉強頑張ってますか?計画的にやってうまくいくと楽しいですよね!

Scratchで2人ブラックジャックを作ろう[2]の難易度はどれくらいだったでしょうか。前回の難易度が5くらいなら今回は7くらいです。

もう一度前回のをみたい方はこちらから。

今回作るところはこちら!!

  • カードを配るプログラムを作ろう
  • カードの目を合計する”定義ブロック”を作ろう
  • ディーラーのカードのうち一枚を隠そう
今回頑張るとできるところ

なかなか面白くなってきました!頑張りましょう〜

カードを配るプログラムを作る

今回はプレイヤー1、プレイヤー2、ディーラーのスプライトをそれぞれクローンしてカードを配ります

配るときはランダムにして色々なカードが配られるようにします

最初はwizardのプログラムから作ります。(クローンの使い方は知っている前提でお話しします。)

wizardのプログラム

caaf80c90dab937be785b217c5fec3eb 495x1024 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

長いですね〜!少しずつみていきましょう。

前回金額設定をした後に、「ゲームスタート」の信号を送りました。「ゲームスタート」を受け取ってからこのプログラムはスタートします。

まず最初に、3秒待つのはカードを配るまで少し間を持たせるためです。その後、必要な変数を初期化(変数を0にすること)します。

次に繰り返しで2回カードをクローンします。ブラックジャックは最初2枚ずつカードが配られるのを覚えていますか?

クローンを生成したら、「ディーラーのクローン回数」「player1のクローン回数」「player2のクローン回数」を1ずつ変えます。ですから、2回繰り返しをした時点で、それぞれ2になっていますね。

最後に、「player1のターン」という信号を送るのと、「ターン数」という変数を1にしておしまいです。

ディーラーのプログラム

今からそれぞれのカードがクローンされた時にどういうふうに動くかプログラムします。最初はディーラーからです。

0049883ea85938b2d77c1cb3f7cda435 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

先ほどwizardがクローンを生成してくれました。これをどのコスチュームにして、どのように配置したりするのかをプログラムします。

カードのコスチュームは全部で52個なので、1~52のコスチュームの中からランダムで1つパソコンに選んでもらいます。

次に、クローンのカードの座標指定についてです。

a906c329c4a8657bae06498de7191bc2 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

先ほどwizardのプログラムの中で繰り返し中に1つずつ増やした「クローンの回数」が計算式に出てきます。

ブラックジャックのルールで何枚でもカードを引くことができるのを思い出してください。21を越えなければ何枚でも引けましたね!

1枚目の時はx座標を〜y座標を〜、2枚目の時はx座標を〜y座標を〜・・・・とひとつひとつにプログラムを書いてしまうと、最悪の場合10枚目の時まで書かないといけなくなります。プログラムが長くなってスマートじゃないですね。

ですから、変数を使ってクローンの回数によって座標が少しずつ右にズレるように計算式を立てます。

クローンの回数が1の時は、-50+20×1=-30となり、2の時は、-50+20×2=-10となります。x座標が20ずつ増えているのがわかります。

こうすることでクローン回数が10になっても上手にカードを配ることができます。

プレイヤー1のプログラム

66a27c92bc20fecbd14b991d155d4917 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

基本はディーラーのプログラムとほぼ一緒です。少し座標の数値が変わってきますので注意してください!

プレイヤー2のプログラム

5dca92c9c6625104504e03fe9b6e2435 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

こちらも頑張って作ってください!

これでカードを配るプログラムは終了です。実際に動かしてみてうまくカードが配られていますか?

カードの目を合計する”定義ブロック”を作る

これが一番大変です。理解は簡単ですが単純作業になりがちなので根気強く頑張ってください!

ディーラーのプログラム

まず最初に、ディーラーのスクリプトエリアを開いた状態で定義ブロックの作成をクリックしてください。

b31f876a5ec65ea3aa7e34cb58880e9f 1024x803 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

上のような画面が出てきたら、ブロック名を「ディーラーのカードの数の目の合計」と入れてください。

これができたら下のプログラムを作ってください。(;_;)

0659f7c8d3023779d84133868b0114c4 572x1024 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生
8d8a92b390064a9e025081c875eb4f6c 629x1024 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

長すぎて写真が分裂していますが繋げてください。

このプログラムの意味を説明します。まず最初にコスチュームをみてください。

822bff34dfead6aeb7d21748c6b4423e 928x1024 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

上の写真の赤丸をよくご覧ください。カード一枚一枚に名前がついています。

スペードなら、sa,s2,s3,…s10,sj,sq,skというふうになっています。名前に数字またはa,j,q,kのいずれかが入っていますね

もう一度プログラムに戻ります。

e4bd642effc03b76695b6e09edfcdcdb - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

プログラムがこれほどまで長いのは、aの時、2の時、3の時、…、qの時、kの時と13個の条件分岐を行っているからです。

上の写真の例は、名前にaが含まれるときの場合です。名前にaが含まれるのは、スペードのA、クローバーのA、ハートのA、ダイヤのAの4つです。この時、今回のブラックジャックでは1と数えるので、「ディーラーのカードの合計」という変数に+1をします。

これを残り12個同様に作ればOKです!

プレイヤー1のプログラム

同じことをプレイヤー1でもやります。コピーを使ってうまくやってください。

5af2da9fdde4cd9b9774950c3707f7f3 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

まず,定義ブロックを新しく作ってください。私は名前を「player1カードの目を合計する」にしました。わかりやすい物を作ってくださいね。

また、変数も違うことに注意してください。先ほどは「ディーラーのカードの合計」でしたが、今回は「Player1のカード合計」です。

写真ではaと2の場合しか映ってませんが、ディーラーの時と同様に残りの数字や記号の条件分岐も作ってください!

プレイヤー2のプログラム

3019ada012e4e8bfb1f45d461f024210 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

プレイヤー1の時と注意するところは一緒です!頑張って作ってください。

作った定義ブロックを使う

先ほど作った定義ブロックはそのままだと何も意味を成しません。

プログラムに組み込んで働いてもらいましょう。

ディーラーのプログラム

62dcb1027f1c16eacbc3b6ec0e43454b - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

先ほどクローンされた時のプログラムを作りました。その下に写真のようにブロックを入れてください。

プレイヤー1のプログラム

1d975c9afd4ebc9bfab66ccd04ac58a1 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

プレイヤー1の時も同様です。ブロック1つ加えるだけなので楽ですね!

プレイヤー2のプログラム

c492ba63cd620cf2a18358b386340b0c - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

ここまできたらプレイヤー2も簡単ですね!

これでカードの目の数を合計するプログラムは完成です!!!!



実際に緑はたを押して動かした時に、ステージの下のほうに出てくる数字とカードの目の合計が一緒か確認してね!!!

8f4007559249efca8140db49def22fa4 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

ディーラーのカードのうち1枚を隠す

これはとっても簡単です。タイミングよくカード裏面のスプライトを出現させるだけです。

カード裏面のプログラム

6ca8c33fed37108b209ecc803d336300 - Scratchで2人ブラックジャックを作ろう[3]-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

こんだけ!

ゲームスタートを受け取ってから、2枚目のカードを配る瞬間まで大体4秒なので4秒待っています。

最後に

さてさてさて、どうだったでしょうか。

前回より難易度が上がっていたと思います。特に、ポイントを増やす仕組みが一番大変でした。

次回は、カードを配ってからヒットとスタンドを行うプログラムを作っていきます。

今まで以上に条件分岐を使用するのでご覚悟を!!

この記事がいいと思ったら↓のシェアボタンから

Comments

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。