シンプルゲームでプログラミングを学ぼう!(7)「クリア・ゲームオーバーを設定する」
シンプルゲームでプログラミングを学ぼう!(7)「クリア・ゲームオーバーを設定する」
★今日のサンプルプログラム・・・> こちら
これから数回に分けて、サンプル教材 落ち物系ゲーム「ボールドロップ」を少しずつ作っていきます。
先回のおさらい → こちら(Scratchサイト)
前回の記事 → こちら
ボール・コップそれぞれ動くし、ぶつかったときに反応もする・・・だけど・・・ゲームとしてはまだまだですね。
実際に動かしてみると、
「もっとこうしたい!ああしたい!」・・・
次から次にアイディアがわいてきます。
実際、子どもたちに自由に言わせてみると、教室が騒然となるぐらい、アイディアが飛び交います。
(どんなアイディアが出そうが想像してみてください)
ボクはひたすら「なるほどねぇ!」・・・アイディアを価値づけることはあえて言いませんが、アイディアを出したこと自体に敬意と謝意をこめて、言葉と表情でリアクションします。
そして
「すべて正解、すばらしい!」
「プログラミングで全て実現できるよ!」
と言うと子どもたちは目を輝かせます。
「ただし、いきなりゴールに到着するということはできません。ゴールまでの道は一つではありません。近道を選ぶか、安全を選ぶか・・・前へ進むか、ここはあえて、後に下がるか・・・人それぞれです。いずれにしろ、自分が動かないとゴールに到着できません」
ここで現実問題としては、次に何をするのか・・・段取り力が必要になります。
これは経験で身に付くコツとか要領というものですが、限られた時間の中でプロジェクトを遂行するには、経験値がある程度高い人がリーダーになって号令をかけてもよいと思います。それが100%ベストでないにしても、みんなで前に進むときは一言が必要になります。
今回の進化ポイント AB
1)ボールの数を◯個にして、端(海底)まで落ちると マイナス1
0になったら、ゲームオーバー・・・・A
2)ボールがコップにさわるとポイントが プラス1
◯点になると、ゲームクリア・・・・B
まずは、ボールの数とポイントの点を記録するための箱をそれぞれ用意します。その箱の中には、それぞれ数字が入ります。その中の数字は、ボールの数の場合は、海底に落ちるとマイナス1だし、ポイントの場合は、コップに入るとプラス1になります。
このように、中身の数字が変わっていくので、変数と言います。これを作ります。新しく作る変数には名前を付けることができます。今回はポイントとボールが数にします。
この名前は、あとから自由に変えられます。
作った変数を右クリック(タブレットの場合は長押し)すると名前を変更できます。ここで名前を変更するとプログラムの中で使われてるコードブロックの名前も自動的にそれに合わせて変更されます。これはすごくありがたい機能です。
変数は、画面にこんな感じで現れます。
この変数の表示ラベルの位置はマウスでドラッグして動かせます・・・色、文字の大きさが変えられないこと、コードでラベルの表示位置を指定できません。これは残念ですが、仕様ですので・・・
さっそく、この変数をゲームの中に組み込みます。
ゲームをスタートしたとき、
ボールの数は仮に10とします。
ポイントは、0にします。
このことをプログラミングの初めにコードブロック指定します。
このブロックは、どのスプライトのコードエリアにおいてもいいのですが、ネコのスプライトのコードエリアにおきてみましょう。(ネコさんは今のところ、非表示ですがコードが置いてあれば裏でちゃんと仕事をします!今は見えていませんが、必要があれば命令一発で姿を表すこともできますよ)
次に、ポイントが増えたり、数字が減ったりする仕組みを付け加えます。
ここで使うのは【(変数名)を(数)ずつ変える 】というブロックを使います。 こんな感じになります。
ちゃんと動くようです・・・でも数字が変わっても、いつまでも動き続けてしまいます。
次に
A:ボールが0になったら ゲームオーバー
B:ポイントが10になれば クリア
ちゃんと止まるようにします。
「ずっと(くりかえす)」・・・・になっていた部分を
「◯回繰り返す」とか「・・・まで繰り返す」に取り替えることにします。
じつは、「ずっと(くりかえす)」という命令は便利ですが、これは強制終了しないと止まりません。これを止めると、止めたくない他のプログラムまで止まってしまう可能性があります。
コンピュータは繰り返すことが大好きなので「ずっと」なんて言われると調子にのって、単純作業でも「いやだぁ~」とも「つかれたぁ~」とも言わずに働き続けます。
見かけ上は、何もしていないように見えますが、コンピュータは、猛烈な勢いで動き続けています。もちろん、コンピュータのパワーを浪費して他のプログラムの動作によくない影響を及ぼします。そして電力も使います。コンピュータが熱くなる・・・その結果、故障・・・なんて言うことも無いとは言い切れません。
脇道に逸れたついでに、こんな計算をScratchにやらせてみます。
1+1=2 2+1=3 3+1=4・・・・答えに1を足し続けます。
プログラミングでは、こんな感じです。
さすがにずっとじゃどうなってしまうか心配なのでタイマーを設定して、10秒で止まるようにしておきます。
さて・・・・この単純作業を何回繰り返すかな・・・実験します。
結果・・・
結論・・・「ずっと~」は、危険な命令・・・もし使うなら、それを止めるための条件もきちんと記述しておくことです。
だから
ボールの数が0以下になる または ポイント>10
この2つの条件が満たされるまで繰り返す・・・逆にそれが満たされた瞬間、その繰り返しループから開放される用にすするのです。
先ほどのプログラムを以下のように変えてみました。
同じことをしているはずですが、繰り返し回数には少し差があります。この差がどうしてできるか分かりませんが、いずれにしろ、この単純計算を1秒間に50万回以上コンピュータは全力で続けるのです。これを「ずっと」続けるとしたら・・・パソコン大丈夫かな?と心配になります。
では、話をもどして
「ボールの数が0以下になる または ポイント>10」
まで繰り返す
書き替えましょう。
これですっきり止まるようになりました。
★今日のサンプルプログラム・・・> こちら
確かに進化しています。ずいぶんゲームっぽくなってきました。でも・・・まだまだじゃないですか?
ここをこうしたい! もっとこうしたい!
そういう思いが高まってきた人は、次回の記事もぜひご覧ください。
・・・次回に続く・・・
前回までの記事もご覧くださいね。
<カネッチの学舎 関連リンク>
・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/
この記事が気に入ったらサポートをしてみませんか?