(雑な)野球盤のようなゲームの作り方です。
動きとしては、
1.aキーでピッチャーがボールを投げる。
2.スペースキーでバッターがバットを振る。
3.ボールとバットが当たればボールが飛ぶ。
雑な点は、
・ピッチャが投げるボールの速さはランダム(変化球とかはない)。
・バットで打った後のボールの飛ぶ方向はランダム。
完成動作
完成コード
以下のように”Pitcher”、”Baseball”、”Batter”、”Catcher”のスプライトを横一線に並べる。
※この4つのスプライトはScratchで用意されているスプライトの中にあります。
ホームランと書いたスプライトを自分で作って左上に設置する。
背景は任意。※背景にボールやバットと同じ色の部分があると変な動作をすることがあるので注意。





※”Catcher”にはスクリプトは作らない。
解説
ピッチャーの動作
まずは”Pitcher”スプライト(以下「ピッチャー」)の動きを基準に考える。
aキーを押した後にピッチャーが投げる動作をするようにするが、ボールを投げる動作をする前から”Baseball”スプライト(以下「ボール」)が見えていたらおかしいのでボールを隠しておく。

“Baseball”スプライトの以下のスクリプトにメッセージが受け取られてボールが隠れる。

・そしてピッチャーのコスチュームを順番に変えることにより、投げる動作をする。
※コスチュームを変えるたびに、「〇秒待つ」のブロックを入れないと、動作が一瞬で変わるので、変わる過程が見えない。
投げる動作が終わったら最初の状態(pitcher-aコスチューム)に戻す。(投げ終わった状態のコスチュームで終わるのはおかしいから)

ピッチャーの動作は以上で完成。
ボールを投げる
次にボールが投げられる(ボールが”Catcher”スプライト(以下「キャッチャー」)に向かって動く)動作を作る。
ボールが投げられるタイミングはピッチャのコスチュームがpitcher-cからpitcher-dに変わるタイミングが良いので、そのタイミングで「ボールを投げる」メッセージを送る。

“Baseball”スプライトの以下のスクリプトにメッセージが受け取られてボールがキャッチャーに向かっていく。
1.ボールの座標をx=-119、y=-5の位置(ピッチャーの少し右)にする。(ボールのスタート位置を決めた)
2.ボールの方向を90度(右向き)にする。(これはのちにボールを打った際にボールの角度をランダムに変えることでボールの飛ぶ方向を毎回ランダムになるようにしているので、一応投げる際は元の90度に戻す。
3.ボールの設定が終わったのでボールを表示する。
4.乱数を使ってランダムな秒数でボールがキャッチャーに向かうようにする。これによってaキーを押すたびにボールがランダムなスピードになる。

バッターの動作
“Batter”スプライト(以下「バッター」)の動作を作成する。
「バッティング監視」メッセージについては後述。
コスチュームをbatter-aからdに順番に変えて、最後はaに戻す。
batter-cのコスチュームの時にバットにボールが当たったらボールが飛ぶようにしたいので、batter-cの後のみ他より少し長めの0.3秒にした。

ボールを打つ
バットを打つ動作を始めるときに、バットとボールが当たるかを監視するメッセージを送る。

“Batter”スプライトの以下のスクリプトにメッセージが受け取られる。
1.ずっと以下を繰り返す。
2.「バッターのコスチュームが”batter-c”」かつ「黄色(バット)と白色(ボール)が触れた」時
3.”ボールを打つ”メッセージを送って待つ。
4.このスクリプトを止める(ずっとの繰り返しを止める。)

上記の3の”ボールを打つ”メッセージが送られたら、”Baseball”スプライトの以下のスクリプトにメッセージが受け取られてボールがランダムな方向に飛んでいく。
1.スプライトの他のスクリプトを止める。(これを入れないと”0.5から3までの乱数秒でCatcherへ行く”のスクリプトが動き続けて動作がおかしくなる。)
2.ボールの向きを0から360度の間でランダムに変えることで打たれたボールがランダムな方向に飛ぶようになる。
3.端に当たるまで2で決まった方向にボールが飛び続ける。
4.ボールが端に当たったらボールを隠す。

コメント