Scratch(スクラッチ)「野球ベースボールゲーム」作り方の説明

KIDSPRO

ピッチャー(コンピューター)と対戦し、ホームランの本数を競うゲームをScratch(スクラッチ)でプログラミングしました。
KIDSPROブログニュース「スキャニメーション」でも説明しましたが、人間の目は、見えない部分を予測して補います。パラパラ漫画で漫画が動いて見えるのは、この人間の目の現象を利用しています。今回のプログラミングでもこの現象を利用しています。

KIDSPRO

バッターのスイング

バッターがバットをスイングするプログラミングでは、上図のような「スイング前」→「スイング中」→「スイング後」の3つのコスチュームを用意します。

次に、上図左のスペースキー押下をトリガーとしたスクリプトにより、この3つのコスチュームを順次切り替えて表示させると、人間の目にはバッターがバットを振っているように見えます。

コスチュームの数を増やすと、よりスムーズにスイングしているように見えますが、野球を見たことがある人なら、スイング前とスイング後の2枚だけでもバッターがスイングしているように見えると思います。

ピッチャーの投球
ピッチャーの投球についても、「投球前」→「2投球中」→「3投球後」の3つのコスチュームを用意し、順次コスチュームを切り替えて表示させるスクリプトにより、ピッチャーがボールを投げる動きを実現しました。文章

KIDSPRO

上図はボールのスクリプトです。
ボールのアルゴリズム1
STEP.1
ボールの球種とスピード決定

左側のスクリプトでは、ボールの球種(球種=0はストレート/球種=1はカーブ)とボールのスピード(2, 3, … ,6)を乱数によりランダムに決定し、「投げる」というカスタムブロックを実行します。また、カーブボールはストレイトボールよりも25%だけ遅いスピードに設定しています。

STEP.2
ボールの当たり判定
「投げる」カスタムブロックでは、上段の部分でホームラン判定を行っています。バッターのスイング中コスチュームのバットの色(深緑)と同じ色を、「もし( )色に触れたなら」ブロックに深緑色を設定します。

これにより、バッターがスイング中コスチュームの時に、バットの深緑色部分がボールに触れたか判定出来るようになります。

STEP.3
ボールを打ち返す
STEP.2の判定が正の時に、ボールの移動方向や角度を変えるスクリプトを作れば、バッターがボールを打ち返し、ボールがホームランの軌道を描くような動きにすることが出来ます。

ボールのアルゴリズム2

「投球のスクリプト」では、ボールを回転させながら、x座標とy座標をカスタムブロックの引数「スピード」値の割合に応じてマイナス方向に移動させ、ボールをステージ右上(ピッチャー投球中の手の部分)から左下に移動させています。また、カスタムブロックの引数「球種」=0(ストレート)の時は、ボールは真っすぐ移動し、引数「球種」=1(カーブ)の時は、x座標が100よりも小さくなったらy座標の変化値を1.8倍にしてy座標の変化幅を大きくして、ボールがカーブの軌道を描くようにプログラミングしました。

ボールのアルゴリズム3

「ボール判定スクリプト」では、「球種」=0(ストレート)の場合はバッターがスイングしていなくてもストライク判定、「球種」=1(カーブ)の場合はバッターがスイングしていなければボール判定するようにプログラミングしました。スイング判定は、上図左側に記載しているバッターのスクリプトで実現しています。