みなさんこんにちは。色々勉強頑張ってますか?計画的にやってうまくいくと楽しいですよね!
scratchで2人ブラックジャックを作ろう[2]の難易度はどれくらいだったでしょうか。前回の難易度が5くらいなら今回は7くらいです。
もう一度前回のをみたい方はこちらから。
今回作るところはこちら!!
なかなか面白くなってきました!頑張りましょう〜
今回はプレイヤー1、プレイヤー2、ディーラーのスプライトをそれぞれクローンしてカードを配ります。
配るときはランダムにして色々なカードが配られるようにします。
最初はwizardのプログラムから作ります。(クローンの使い方は知っている前提でお話しします。)
長いですね〜!少しずつみていきましょう。
前回金額設定をした後に、「ゲームスタート」の信号を送りました。「ゲームスタート」を受け取ってからこのプログラムはスタートします。
まず最初に、3秒待つのはカードを配るまで少し間を持たせるためです。その後、必要な変数を初期化(変数を0にすること)します。
次に繰り返しで2回カードをクローンします。ブラックジャックは最初2枚ずつカードが配られるのを覚えていますか?
クローンを生成したら、「ディーラーのクローン回数」「player1のクローン回数」「player2のクローン回数」を1ずつ変えます。ですから、2回繰り返しをした時点で、それぞれ2になっていますね。
最後に、「player1のターン」という信号を送るのと、「ターン数」という変数を1にしておしまいです。
今からそれぞれのカードがクローンされた時にどういうふうに動くかプログラムします。最初はディーラーからです。
先ほどwizardがクローンを生成してくれました。これをどのコスチュームにして、どのように配置したりするのかをプログラムします。
カードのコスチュームは全部で52個なので、1~52のコスチュームの中からランダムで1つパソコンに選んでもらいます。
次に、クローンのカードの座標指定についてです。
先ほどwizardのプログラムの中で繰り返し中に1つずつ増やした「クローンの回数」が計算式に出てきます。
ブラックジャックのルールで何枚でもカードを引くことができるのを思い出してください。21を越えなければ何枚でも引けましたね!
1枚目の時はx座標を〜y座標を〜、2枚目の時はx座標を〜y座標を〜・・・・とひとつひとつにプログラムを書いてしまうと、最悪の場合10枚目の時まで書かないといけなくなります。プログラムが長くなってスマートじゃないですね。
ですから、変数を使ってクローンの回数によって座標が少しずつ右にズレるように計算式を立てます。
クローンの回数が1の時は、-50+20×1=-30となり、2の時は、-50+20×2=-10となります。x座標が20ずつ増えているのがわかります。
こうすることでクローン回数が10になっても上手にカードを配ることができます。
基本はディーラーのプログラムとほぼ一緒です。少し座標の数値が変わってきますので注意してください!
こちらも頑張って作ってください!
これでカードを配るプログラムは終了です。実際に動かしてみてうまくカードが配られていますか?
これが一番大変です。理解は簡単ですが単純作業になりがちなので根気強く頑張ってください!
まず最初に、ディーラーのスクリプトエリアを開いた状態で定義ブロックの作成をクリックしてください。
上のような画面が出てきたら、ブロック名を「ディーラーのカードの数の目の合計」と入れてください。
これができたら下のプログラムを作ってください。(;_;)
長すぎて写真が分裂していますが繋げてください。
このプログラムの意味を説明します。まず最初にコスチュームをみてください。
上の写真の赤丸をよくご覧ください。カード一枚一枚に名前がついています。
スペードなら、sa,s2,s3,…s10,sj,sq,skというふうになっています。名前に数字またはa,j,q,kのいずれかが入っていますね。
もう一度プログラムに戻ります。
プログラムがこれほどまで長いのは、aの時、2の時、3の時、…、qの時、kの時と13個の条件分岐を行っているからです。
上の写真の例は、名前にaが含まれるときの場合です。名前にaが含まれるのは、スペードのA、クローバーのA、ハートのA、ダイヤのAの4つです。この時、今回のブラックジャックでは1と数えるので、「ディーラーのカードの合計」という変数に+1をします。
これを残り12個同様に作ればOKです!
同じことをプレイヤー1でもやります。コピーを使ってうまくやってください。
まず,定義ブロックを新しく作ってください。私は名前を「player1カードの目を合計する」にしました。わかりやすい物を作ってくださいね。
また、変数も違うことに注意してください。先ほどは「ディーラーのカードの合計」でしたが、今回は「Player1のカード合計」です。
写真ではaと2の場合しか映ってませんが、ディーラーの時と同様に残りの数字や記号の条件分岐も作ってください!
プレイヤー1の時と注意するところは一緒です!頑張って作ってください。
先ほど作った定義ブロックはそのままだと何も意味を成しません。
プログラムに組み込んで働いてもらいましょう。
先ほどクローンされた時のプログラムを作りました。その下に写真のようにブロックを入れてください。
プレイヤー1の時も同様です。ブロック1つ加えるだけなので楽ですね!
ここまできたらプレイヤー2も簡単ですね!
これでカードの目の数を合計するプログラムは完成です!!!!
実際に緑はたを押して動かした時に、ステージの下のほうに出てくる数字とカードの目の合計が一緒か確認してね!!!
これはとっても簡単です。タイミングよくカード裏面のスプライトを出現させるだけです。
こんだけ!
ゲームスタートを受け取ってから、2枚目のカードを配る瞬間まで大体4秒なので4秒待っています。
さてさてさて、どうだったでしょうか。
前回より難易度が上がっていたと思います。特に、ポイントを増やす仕組みが一番大変でした。
次回は、カードを配ってからヒットとスタンドを行うプログラムを作っていきます。
今まで以上に条件分岐を使用するのでご覚悟を!!
[…] Scratchで2人ブラックジャックを… […]
[…] Scratchで2人ブラックジャックを… […]