
3匹のネコを競争させて、1位を当てるゲームを作ってみます。
1位を当てると3点貰え、外れると1点失います。
競馬みたいなゲームです。
乱数を使って3匹の走る速さを変える事と、メッセージを使って3匹のネコの動きをそろえるところがポイントです。
プログラムの概要
競馬のようなゲームを作ってみます。
1位になるネコを予想してレースを開始します。
1位と当てることができたらポイントがもらえます。
外れたらポイントを失います。
操作方法
1位になると思うネコをクリックします。
スタートボタンを押すとレースが始まります。
赤い線のゴールに1位のネコが到着したら終了です。
また、次に1位になるネコをクリックしてスタートします。
ポイントがゼロになるまで続けることができます。
プログラムのポイント
今回のプログラムでは「メッセージを送る」をたくさん使っています。
メッセージを使って3つのネコの動きの足並みをそろえていきます。
ネコの走る速さは乱数を使います。
スプライト
このプログラムで使うスプライトは次の通りです。
・ネコのスプライト3個
・ゴール線のラインスプライト
・スタートなどの操作をするボタンスプライト
・ネコの番号スプライト

少しだけ加工するスプライトがあるので説明します。
ラインスプライト
サンプルの中からLineを使います。
大きさを50にします。
向きを0にします。
ゴールの位置はおおよそでいいです。下の画像を参考にしてください。

ボタンスプライト
サンプルの中からボタンのスプライトを使います。
コスチュームの一つに「スタート」の文字を書いておきます。
今回はコスチュームを2つ使います。

スプライトを調整しておきます。
大きさを70ぐらいにします。
場所はどこでもいいのですが、邪魔にならない場所にしましょう。

ネコのスプライト
ネコのスプライトを3つ用意します。
大きさと位置を調整します。
スタート位置は全員揃うように気をつけましょう。
x座標を-200にします。
y座標は均等になるように適当な位置でいいです。
大きさは70ぐらいがいいです。
各スプライトの設定値は下の画像を参考にしてください。
1つ目

2つ目

3つ目

番号スプライト
番号スプライトは特に役割はありません。
上からネコに番号を付けているだけなので、ネコの位置に合わせて適当に配置します。

プログラム
今回のプログラムではメッセージを多く使います。
色々なスプライトのブロックがメッセージで動いていきます。
これからスプライト単位でプログラムの説明をしますが、プログラムが動く順番に説明できないのでちょっとわかりにくいかもしれません。
猫スプライト1

主なプロフラムは、ランダムな速さで走らせる部分です。

走るプログラム
スタートを受け取ったらネコが走り始めるプログラムです。
1秒ごとに1歩~50歩の範囲でランダムに走ります。
1~50の間で乱数を作ります。
その乱数の分だけx座標を増やします。
y座標は変更する必要ないので、スタートの位置のまま同じ数字にしておきます。

もう一つは、おまけです。
走っている感じを出すために、コスチュームを変えて足を動かしているように見せます。
これをずっと繰り返しますが、0.5秒待つを入れておかないと早く動きすぎてしまいます。
おまけなのでなくてもいいプログラムです。

1位の予想
スタート前に1位を予想するプログラムです。
1位になるネコをクリックして1位予想をします。
クリックされたときのプログラムです。
状態=1の時このプログラムは機能します。
状態が1の時というのは、1位を予測するタイミングにしています。
変数「状態」は他のスプライトでも変更したりチェックしているので確認してみてください。
1つ目のネコがクリックされたときは変数「予想」を1にします。
2つ目のネコの場合は2、3つ目のネコの場合は3を入れて、どのネコを選んだかを記録しておきます。

状態 | 説明 |
---|---|
1 | 1位の予想をする状態 |
2 | 予想が終わってスタート待ちの状態 |
3 | レースが始まった状態 |
スタート位置に移動
スタートラインにネコを移動するプログラムです。

レースが終わったとき
誰かがゴールに着いたとき、スプライトの動きを止めるプログラムです。

猫スプライト2
猫スプライト1と基本的には同じです。
1位予想した時に変数に入れる値と、スプライトのy座標が違うぐらいです。
参考にプログラムを載せておきます。

猫スプライト3
猫スプライト1と基本的には同じです。
1位予想した時に変数に入れる値と、スプライトのy座標が違うぐらいです。
参考にプログラムを載せておきます。

ゴールラインスプライト

一番にゴールに到着したネコを判定するプログラムを作ります。
1位のネコを判定する
レースが始まったら1~3のどれかのネコが、このスプライトに触れるまで判定を続けます。
スプライト1のネコが触れたら、変数「1位」を1にします。
同じようにスプライト2ネコの場合は2、3の場合は3にします。
1位が決まった時点で判定は終了していいので「このスプライト止める」を実行します。

ボタンスプライト

ボタンのスプライトは、レースを開始するす役割と、
次の操作を説明する役割を持たせます。

初期化とスタート
プログラムがスタートしたら、今回使う変数を初期化します。
基本的には0または空白にすればよいのですが、初めに持っているポイントは3ポイントぐらいにします。
このポイント使ってレースをしていきます。
また、ボタンのコスチュームを変更して「スタート」の表示を消しておきます。
最後に「予想」のメッセージを送ります。
このメッセージを送ることで、1位のネコを予想できるようにします。

予想モードにする
メッセージ「予想」を受け取ったら動くプログラムです。
状態を変えて予想モードにします。
状態を1にすると、ネコをクリックして1位を予想で切るようになります。
1位のネコを予想するようにボタンに喋らせます。

スタート待ち状態にする
1位のネコを予想して、ネコをクリックしたらメッセージ「スタート待ち」が送られてきます。
状態が1の時、このプログラムが機能します。
ネコのスプライトの方で、状態が1の時しか1位を予測できないようにしているので、この条件は無くても大丈夫です。
状態を2にすることで、スタート待ちの状態にします。
コスチュームを変更して、スタートボタンを押せるようにします。
ボタンを押したらレースが始まることをしゃべらせています。

レースをスタートする
ボタンが「スタート」の表示になっているときに押したら、レースがスタートします。
レースがスタートできるのは状態が2の時なので、条件でチェックしています。
まず、ボタンをクリックできなくするためにコスチュームを変えます。
そのあと、カウントダウンを始めます。
メッセージ「スタート」を送ると、ネコのスプライトが受け取って、ネコが動き始めます。
状態を3にすることでレース中の状態にします。
最後におまけで「GO!」としゃべらせています。

ゴールした時の処理
コールをしたときのいろいろな後始末をさせています。
ネコが赤いゴール線に到着したら、メッセージ「ゴール」が送られてきます。
1位を予想したネコと1位のネコが一致したら、ポイントを3増やします。
外れたら1減らします。
一応、1位のネコはどれだったら喋らせます。
この後、ポイントが0になったらゲームオーバーにします。
まだポイントが残っていれば、次のレースを始めるために1位の予想ができ用にします。
予想のメッセージを送って、変数を初期化します。

コメント