プログラムの中身を詳しくみてみよう
野球ゲームのスクリプトについてスプライトごとに解説します。
-
概要
概要
大まかな内容
- をクリックしてゲームを開始します。
下向き矢印キーを押すとピッチャーがボールを投げます。
スペースキーを押すとバットが回転します。
バットでボールを打つと守備モードになり、内野手、外野手がボールを追いかけます。
ボールの状態と最初に触れたものによって次のようなバッティング結果となります。
バッティングの結果が表示された後はどれかのキーを押すとバッティングモードに戻ります。
ボール
主な動き
- ピッチャーから投球 が送られてきたらピッチャーの位置からミットに向かって移動する。
- バットに当たらずに下の端までいったらバッティングモードのまま次の投球が送られてくるまで待つ。
バットに当たったら守備モードに移る。 - バットに当たったらその時のバットの角度と、ボールの角度から打球が飛ぶ方向を決定する。
- フライの滞空時間はランダムに決定する。
- 背景が守備になったらまずはフライの状態で進み、一度着地した後はゴロで進む。
- フライの時にスタンド(茶色)に触れたらホームラン、
左右の端に触れたらファール、フライの落下地点で内野手や外野手に触れたらアウト。
ゴロの時にスタンド(茶色)に触れたら2塁打、左右の端に触れたらファール、 内野手に触れたらアウト、外野手に触れたらヒットになります。
がクリックされたとき
- フライの速さを「4」にします。
背景がバッティングになったとき
- 一度、非表示にします。
投球を受け取ったとき
-
- 説明
ピッチャーから投球が送られてきたら、 ピッチャーの位置から下に向かって移動します。
バットに当たらずに下の端までいったら、バッティングモードのまま次の 投球が送られてくるまで待ちます。
バットに当たったら守備モードに移ります。
- コードの詳細
背景が2(守備モード)である場合はこのスクリプトを止めて何もしません。
180度(下)に向けます。
y座標を170(画面上)にします。
x座標をピッチャーのx座標と同じ位置にします。
大きさを100%にして表示します。
打ったを0にします。下の端に触れるか 打ったが1になるまで(バットに当たるまで) 投球をくり返します。
投球を1回実行するごとにくり返すと処理が遅く、ボールの動きが遅くなるため、 1回のくり返しの中で投球を10回実行しています。
投球
-
- 説明
ミットに向かって進み、バットに当たったらボールの角度とバットの角度から 打った後のボールの角度を決定し、守備モードに移ります。
- コードの詳細
打ったが1である場合 (すでにバットに当たっている場合)は、このスクリプトを止めて何もしません。
ミットへ向けて1歩動かします。
もしバットに触れたら 打つを実行して 背景を守備にします。
打つ
-
- 説明
打った後のボールの角度と滞空時間を決定します。
打った後のボールの角度はバットに当たる瞬間のボールの角度とバットの角度から決定します。
滞空時間はランダムに決定します。滞空時間の値が大きい程、フライの飛距離が長くなります。
- コードの詳細
打ったを1にします。
ボールの向きを逆向き(180度回転)にします。
バットの垂線の角度をバットの向き-90度にします。
ボールの向きを バットの垂線の角度+( バットの垂線の角度-向き) にします。
打った後のボールの方向を少し自然にするためにボールの向き を左に10度回転させています。
滞空時間を10から45までの乱数で決定しています。 滞空時間が長いほどフライの状態が長くなります。
ボールの向き(170度)を180度回転=-10度
バットの垂線の角度(30度)-ボールの 向き(-10度)=40度
バットの垂線の角度(30度)+40度=ボールの 向き(70度)
70度-10度(左に10度回転)=打った後のボールの 向き(60度)
背景が守備になったとき
-
- 説明
まずはフライの状態で進み、一度着地した後はゴロで進みます。
フライの落下地点で内野手や外野手に触れたらアウトです。
ゴロの時に内野手に触れたらアウト、外野手に触れたらヒットです。
フライの時にスタンド(茶色)に触れたらホームランです。
ゴロの時にスタンド(茶色)に触れたら2塁打です。左右の端に触れたらファールです。
- コードの詳細
バッティング結果、 着地を0にします。
x座標を0、 y座標を-160にします。
大きさを50%にしますフライを実行します。
フライの中で バッティング結果が出た場合(ホームランもしくはファールになった場合)はこのスクリプトを止めます。
着地を1にします。
着地した時点で内野手または 外野手に触れたらバッティング結果を2(アウト)にし、 守備完了を送ってこのスクリプトを止めます。
まだバッティング結果が出ていない場合(0の場合)は ゴロを実行します。
フライ
-
- 説明
打ってから一度地面に落ちるまでの動きです。
フライの速さずつ移動します。
前半は徐々に大きくなっていき、後半は徐々に小さくなります(空中に上がってから落ちていきます)。
- コードの詳細
上昇落下速度を3にします (1回のループで変わる高さ(ボールの見た目の大きさ)です)。
以下のAの処理を2回くり返します。
- A :
滞空時間の数だけ以下のBをくり返します。
上昇落下速度に-1をかけます(上昇から落下に変更します)。 - B :
フライの速さだけ動かします。
大きさを上昇落下速度ずつ変えます。
もしスタンド(茶色)に触れたらバッティング結果を5(ホームラン)にし、 守備完了を送ってこのスクリプトを止めます。
もし端に触れたらバッティング結果を1(ファール)にし、 守備完了を送ってこのスクリプトを止めます。
ゴロ
-
- 説明
一度地面に落ちた後のボールの動きです。
内野手、外野手、スタンド、端のいずれかに触れるまで2ずつ移動します。
- コードの詳細
以下のAの処理をずっとくり返します。
- A :
毎回2歩ずつ動かします。
内野手、外野手、スタンド、端のいずれかに触れたら、それに応じた バッティング結果にし、 守備完了を送ってこのスクリプトを止めます。
触れたものに対するバッティング結果は次のようにします。
バット
主な動き
- スペースキーが押されたら、180度から左に1度ずつ360回まわし、360度回転する。
背景がバッティングになったとき
- x座標を-40、 y座標を-150にし、 向きを180度に向けて表示します。
背景が守備になったとき
- 非表示にします。
下向き矢印キーが押されたとき
- 向きを180度に向けます。
スペースキーが押されたとき
- まず180度に向けてから左に1度回すを15回実行し、それを24回くり返します
(360度回します)。
ミット
主な動き
- 画面下方の中央の位置に表示し、ピッチャーから 投球が送られてきたら水平移動する。
背景がバッティングになったとき
- x座標を-40、y座標を-150にし、 向きを180度に向けて表示します。
背景が守備になったとき
- 非表示にします。
投球を受け取ったとき
-
- 説明
ミットのx座標を中央からランダムな位置へ1秒間移動させます。
ミットが移動することにより、そこに向かってくるボールの軌道も変化します。
- コードの詳細
x座標を0、 y座標を-126にします。
移動後のx座標を-30~54の範囲でランダムに決定します。
x座標を0から移動後のx座標まで1秒で移動させます。
ピッチャー
主な動き
- 背景がバッティングの時のみ表示する。
- 下向き矢印キーが押されたら、中央から水平方向のランダムな位置へ移動してボールを投げる (投球を送って待つ)。
背景がバッティングになったとき
- x座標を0、y座標を150にして表示します。
背景が守備になったとき
- 非表示にします。
下向き矢印キーが押されたとき
-
- 説明
x座標を中央からランダムな位置へ「0.5」秒間移動させてからボールを投げます。
- コードの詳細
移動後のx座標を-30~30の範囲でランダムに決定します。
x座標を0から移動後の x座標まで0.5秒で移動させます。
ボールとミットへ投球を送って待ちます。
内野手
主な動き
- クローンを4つ作り、ファースト、サード、セカンド、ショートの位置に配置する。クローンではないオリジナルはピッチャーの位置に配置する。
- 打球がフライの間は着地点に向かって移動する。ただし、落下地点までの距離が100より近い場合のみで、それよりも遠い場合は移動しない。
- 打球がゴロになったらボールに向かって移動します。ただし、ボールまでの距離が150より近い場合のみで、それよりも遠い場合は移動しない。
がクリックされたとき
-
- 説明
クローンを4つ作り、ファースト、サード、セカンド、ショートの位置に配置します。
クローンではないオリジナルはピッチャーの位置に配置します。
最初に配置した位置(守備位置)を保存しており、バッティングモードから守備モードに移った際に、 毎回守備位置に戻るようにします。
- コードの詳細
非表示にします。
x座標を100、 y座標を-30にします。
クローンを作ります。(ファースト)
x座標に-1をかけます。
クローンを作ります。 (サード)
x座標を70、 y座標を20にします。
クローンを作ります。(セカンド)
x座標に-1をかけます。
クローンを作ります。(ショート)
x座標を0、y座標を-60にします。(ピッチャー)
守備位置xを x座標にします。
守備位置yをy座標にします。
クローンされたとき
- x座標、y座標を 守備位置x、守備位置に保存し、 バッティングモードから守備モードに移った際に毎回守備位置に戻るようにします。
背景が守備になったとき
-
- 説明
各内野手をそれぞれの守備位置に表示し、ボールを追いかけます。
- 必要な処理
1. それぞれの守備位置に表示します。
2. 打球がフライの間は落下地点に向かって移動します。 ただし落下地点までの距離が100より近い場合のみで、それよりも遠い場合は移動しません。
3. 打球がゴロになったらボールに向かって移動します。 ただしボールまでの距離が150より近い場合のみで、それよりも遠い場合は移動しません。- コードの詳細
x座標を守備位置x、 y座標を 守備位置yにして表示します。
(最初に配置した守備位置に表示します)。
次にボールを追いかける処理のくり返しとなる、以下のAを開始します。
- A :
着地=0(フライの状態)で 落下地点までの距離が100より近い場合は 落下地点へ移動を実行します。
着地が0以外(ゴロの状態)で ボールまでの距離が150より近い場合は ボールを追うを実行します。
1回くり返すごとに0.01秒の待機時間を入れます。
落下地点へ移動
-
- 説明
フライの落下地点に向かって移動します。
落下地点に到達したら止まり、 コスチュームをキャッチにします。
- コードの詳細
落下地点までの距離 が3より近い(2以下)の場合はコスチュームを キャッチにします。
落下地点までの距離 が3以上の場合はコスチュームを 移動にし、 向きを落下地点へ向けて1歩動かします (ボールではなく落下地点に向かいます)。
ボールを追う
-
- 説明
ボールに向かって移動します。
- コードの詳細
コスチュームを移動にし、 向きをボールへ向けて1歩動かします。
守備完了を受け取ったとき
- コスチュームをキャッチにします。
スプライトの他のスクリプトを止めます。
背景がバッティングになったとき
- スプライトの他のスクリプトを止めて非表示にします。
外野手
主な動き
- クローンを2つ作り、レフト、ライトの位置に配置する。 クローンではないオリジナルはセンターの位置に配置する。
- 打球がフライの間は着地点に向かって移動する。 ただし落下地点までの距離が100より近い場合のみで、それよりも遠い場合は移動しない。
- 打球がゴロになったらボールに向かって移動します。 ただしボールまでの距離が150より近い場合のみで、それよりも遠い場合は移動しない。
がクリックされたとき
-
- 説明
クローンを2つ作り、ライト、レフトの位置に配置します。
クローンではないオリジナルはセンターの位置に配置します。
最初に配置した位置(守備位置)を保存しており、 バッティングモードから守備モードに移った際に、毎回守備位置に戻るようにします。
- コードの詳細
非表示にします。
x座標を140、 y座標を80にします。
クローンを作ります。(ライト)
x座標に-1をかけます。
クローンを作ります。(レフト)
x座標を0、 y座標を120にします。(センター)
守備位置xをx座標にします。
守備位置yをy座標にします。
クローンされたとき
- x座標、 y座標を 守備位置x、 守備位置yに保存し、 バッティングモードから守備モードに移った際に毎回守備位置に戻るようにします。
背景が守備になったとき
-
- 説明
各外野手をそれぞれの守備位置に表示し、ボールを追いかけます。
- 必要な処理
1.それぞれの守備位置に表示します。
2.打球がフライの間は落下地点に向かって移動します。 ただし落下地点までの距離が100より近い場合のみで、それよりも遠い場合は移動しません。
3.打球がゴロになったらボールに向かって移動します。 ただしボールまでの距離が150より近い場合のみで、それよりも遠い場合は移動しません。- コードの詳細
x座標を守備位置x、 y座標を守備位置yにして表示します。
(最初に配置した守備位置に表示します)。
次にボールを追いかける処理のくり返しAを開始します。
- A :
着地=0(フライの状態)で 落下地点までの距離が100より近い場合は 落下地点へ移動を実行します。
着地が0以外(ゴロの状態)で ボールまでの距離が150より近い場合は ボールを追うを実行します。
1回くり返すごとに0.01秒の待機時間を入れます。
落下地点へ移動
-
- 説明
フライの落下地点に向かって移動します。
落下地点に到達したら止まり、 コスチュームをキャッチにします。
- コードの詳細
落下地点までの距離が 3より近い(2以下)の場合はコスチュームを キャッチにします。
落下地点までの距離が 3以上の場合はコスチュームを 移動にし、 向きを落下地点へ向けて1歩動かします(ボールではなく落下地点に向かいます)。
ボールを追う
-
- 説明
ボールに向かって移動します。
- コードの詳細
コスチュームを移動にし、 向きをボールへ向けて1歩動かします。
守備完了を受け取ったとき
- コスチュームをキャッチにします。
スプライトの他のスクリプトを止めます。
背景がバッティングになったとき
- スプライトの他のスクリプトを止めて非表示にします。
落下地点
ボールが落ちる場所に配置します。ボールがフライの状態の間、 野手はボールではなくこの落下点に向かって移動するようにします。
主な動き
- 打った場所からボールと同じ方向にフライの速さ×滞空時間×2歩だけ動かす (フライの落下地点に移動する)。
- 常に非表示にする。
背景がバッティングになったとき
- 非表示にします。
背景が守備になったとき
- 非表示にします。
x座標を0、 y座標を-160にします。
向きをボールと同じ向きにします。
フライの速さ× 滞空時間×2歩動かします(フライの落下地点に移動します)。
結果
主な動き
- ボールから守備完了が送られてきたら バッティング結果に対応したコスチュームで表示する。
- どれかのキーが押されるまで表示し、キーが押されたら非表示にして背景をバッティングにする。
背景がバッティングになったとき
- 非表示にします。
背景が守備になったとき
- 非表示にします。
守備完了を受け取ったとき
- x座標を0、
y座標を-120にします。
コスチュームをバッティング結果に 合わせて変更して表示します。
どれかのキーが押されるまで結果を表示したまま待ちます。
キーが押されたら非表示にして背景をバッティングにします。