見出し画像

シンプルゲームでプログラミングを学ぼう!(19)「落ちてくるキャラごとに得点が異なる設定」

シンプルゲームでプログラミングを学ぼう!(19)「落ちてくるキャラごとに得点が異なる設定」

今日のサンプルプログラム・・・> こちら

※できれば以下の記事をさっと見てから開いてくださいね!
※はじめてこのページにお越しの方は、シリーズ(1)からご覧いただき、各回ごとにサンプルプログラムをさわって頂けるとうれしいです。

これまで、サンプル教材 落ち物系ゲーム「ボールドロップ」を少しずつ進化させてきています。※最初に設定した「ボールドロップ」からイメージは大きく変わってきましたが・・・

先回のおさらい → こちら

前回の記事 → こちら

前回の成果

・設定された時間で「時間切れです!」とメッセージが表示されて、ゲームが終了する仕組みを組みました!

 簡単にはクリアできない・・・でもクリアできるかもしれない・・・そんな感じにはなったきたかな?

     今回の進化(変化)ポイント

・落ちてくるキャラごとに、ポイントが異なる

これまではどのキャラを受け取っても、平等にプラス1点でした。キャラによって1点から5点と持ち点が異なり、受け取ることができた時は、その持ち点がプラスされ、とれなかった時は逆にその分がマイナスになるという仕組みを作ってみたいと思います。

ゲームとしての見た目、面白さが向上するかどうかはわかりませんが、「思いついたら試してみる」というチャレンジ精神といういかポジティブな姿勢がプログラマー否クリエーターには必要だとボクは思います。

前回までに作ったプログラムを生かしつつ、今回も手を加えてみたいと思います。

まず、今まで、コップに入ったらポイントが1点入るというコードを見てみます。

ポイントが1点入る仕組み

【ポイントが(1)ずつ変える】たった一つのコードでした。Ballスプライトに設定されたこのコードは、クローン(Ballスプライの複製)にもまったく同じように適応されます。

これを、クローンごとに、1点から5点に振り分けるとしたら・・・・

一番簡単な方法は、

ポイントが1点~5点にランダムに決められる

でも、ゲームプレーから見ると、そのキャラが1点キャラなのか5点キャラなのかさっぱり分からず、知らない間にポイントだけが変わっていくことになります。

これでは、技も戦略もあったものではありません。

キャラが落ちてくるときに、
「このキャラは5点、あっちは1点」と
見分けられることが必要です。

そこで、落ちてくるキャラが、
”自分の持ち点を吹き出しで示す”
という仕組みを考えてみましょう。

はじめに、各キャラが、自分の持ち点を決める(決められる)タイミングはいつがいいかというと・・・

キャラが落ち始めるタイミングです。具体的にいうと、キャラが一番上(スタートライン)に来たときです。

キャラが落ち始めるタイミング

このブロックの後、{持ち点}(変数)が1~5のどれかに決められる・・・だから

{持ち点}(変数)】「1から5」までの乱数にする

でいいわけです。そうだ!・・・{持ち点}という変数を作ろう!・・・・そして、・・・【{持ち点}と言う】・・・
さらには・・・【ポイントが{持ち点}ずつ変える

 これでいける!!・・・はず・・・・???

残念・・・うまくいきません。・・・ちゃんと動くのに、得点が正しくカウントされないのです。

一体なぜでしょうか?・・・少し難しく感じた方は、読み飛ばしてください・・・いや、ここはがんばりどころです。少し、立ち止まって、深呼吸・・・

なんのこっちゃ?・・・でも構いません。プログラミング経験を積むと後から分かってくるからです。

このままではうまく動作しない原因は、{持ち点}(変数)にあります。

この{持ち点}(変数)は、クローンが、一番上にいったタイミングで作られます。

例えば、クローンAの{持ち点}(変数)が5点になったとします。その後、クローンBの{持ち点}(変数)が1点になりました。・・・このあと、クローンAを受け止めると・・・ポイントは? 5点入る???

入りません。{持ち点}(変数)は、すでに、1点に変わっていますので・・・・

これでは、詐欺のようなものです。
「あなた5点と言ってたのに、1点しかくれなかった・・・うそつき!」
・・・でも、実は、ここにはプログラミングの可能性を大きく広げる仕組みがかくされています。

以下、新たに個別の変数をつくるので、名前を”個別の持ち点”と改めます。

{個別の持ち点}(変数)を作るときの画面をみてください。

変数のタイプは、グローバル?ローカル?

{個別の持ち点}(変数)という名前は、同じでも
”すべてのスプライト用”(グローバル変数)にすると、どのスプライト・コスチュームでも同じになります。
”このスプライトのみ”(ローカル変数)にすると、そのスプライト・コスチュームごとに個別になります。他のスプライトからは、見えないし、使えません。

そうです!

{個別の持ち点}(変数)を作るときに、”このスプライトのみ”(ローカル変数)を指定するのです。

そうすれば、{個別の持ち点}(変数)は、スプライト・コスチュームごとに、個別に決められるので、【ポイントが{個別の持ち点}ずつ変える】が個別ごとに変わってくるのです。

{個別の持ち点}(変数)は、ローカル変数(個別の変数)

今回はここまで・・・

画面がゴチャゴチャして見にくい・・・確かにそうですね。でもまた一つ歩みを進めていますね。

今日のサンプルプログラム・・・> 

せっかくここまできたのだから・・・あそこを・・・もうすこし・・・

ここをこうしたい! もっとこうしたい!

そういう思いが高まってきた人は、次回の記事もぜひご覧ください。
       ・・・次回に続く・・・

前回までの記事もご覧くださいね。


<カネッチの学舎 関連リンク>


 ・Note版トップページ https://note.com/kanech21
  ・テーマ別マガジン https://note.com/kanech21/magazines

WEB版 カネッチの学舎 小学部トップページ  
https://kanech21.jp/k_index.html

カネッチのスクラッチスタジオ     https://scratch.mit.edu/search/studios?q=kanech21

カネッチの学舎 コンテンツストア
  https://kanech-manabiya.stores.jp/


  


この記事が気に入ったらサポートをしてみませんか?