プログラムの 中身 を 詳 しくみてみよう
爆弾 ゲームのスクリプトについてスプライトごとに 解説 します。
プレイヤー
主な 動 き
- 上(↑)、下(↓)、左(←)、右(→)の 矢印 キーで 動 かします。
- スペースキーを 押 すと 爆弾 を 置 きます。
- ペンギンや 炎 に当たってしまうとGAME OVERとなります。
- 爆弾 は一度に4つまで 置 くことができます。
- 左折 や 右折 をした 際 には、曲った後の道の中央に 位置 するように 座標 を 微 調整します。
「Start」を受け取ったとき
-
説明
-
上下左右の 矢印 キーでPlayerを 動 かし、スペースキーで 爆弾 を 置 きます。
ペンギンや 炎 に 触 れてしまったらダメージを受けた 演出 をし、 GAME OVERを送って終了します。
コードの 詳細
-
各変数 の 値 、コスチューム、 座標 を 初期化 します。
ペンギンまたは 炎 に 触 れるまでAの 処理 をくり返します。
- A :
押 されたキーによって 対応 したスクリプトを実行します。
-
ペンギンまたは 炎 に 触 れたら 以下 のように ダメージを受けたを実行して終了します
(ダメージを受けたの中で game overを送ります)。
爆弾 を 置 く
-
説明
-
Playerがいる場所に 爆弾 を 置 きます。
ただし、1つ前の 爆弾 を 置 いた直後であったり、 最大数(4つ)の 爆弾 をすでに 置 いてしまっていたりする場合は 爆弾 を 置 きません。
コードの 詳細
-
爆弾 使用 不可 が0( 爆弾 が使用 可能 )かつ 使用中の 爆弾 数が4 (同時に使用できる 爆弾 の数)より少ない場合のみAの 処理 をして 爆弾 を 置 きます。
- A :
爆弾 のクローンを作ります。
使用中の 爆弾 数を1 増 やします。
爆弾 使用 不可 を1にします。
爆弾 設置 を送ります。
爆弾 設置 を受け取ったとき
- 1秒待ってから 爆弾 使用 不可 を0にします( 爆弾 使用 不可 の 状態 を 解除 します)。
ダメージを受けた
-
説明
-
ペンギンまたは 炎 に 触 れてダメージを受けたときの 演出 をし、 game overを送ります。
コードの 詳細
-
コスチュームをダメージにします。
meow( 猫 の鳴き声)の音を鳴らします。
以下 のAの 処理 を40回くり返します。
- A :
y 座標 を2ずつ 変 えます(上方向に2だけ 動 かします)。
ghostの 効果 を3ずつ 変 えます (少しずつ 薄 くなって消えていくようにします)。 -
game overを送ります。
右へ 移動
-
説明
-
右方向へ 移動 します。ただし右 側 に 壁 がない場合のみ 移動 します。
コードの 詳細
-
向きを右方向(90度)にします。
Playerが 右端 にいなければ(x 座標 < 右端 なら) 横方向を実行して右に2だけ 移動 します。
ただしx 座標 = 右端 -1である場合は右に1だけ 移動 します。
左へ 移動
-
説明
-
左方向へ 移動 します。ただし左 側 に 壁 がない場合のみ 移動 します。
コードの 詳細
-
向きを左方向(-90度)にします。
Playerが 左端 にいなければ(x 座標 > 左端 なら) 横方向を実行して左に2だけ 移動 します。
ただしx 座標 = 左端 +1である場合は左に1だけ 移動 します。
上へ 移動
-
説明
-
上方向へ 移動 します。ただし上 側 に 壁 がない場合のみ 移動 します。
コードの 詳細
-
Playerが 上端 にいなければ(y 座標 < 上端 なら) 縦 方向を実行して上に2だけ 移動 します。
ただしy 座標 = 上端 -1である場合は上に1だけ 移動 します。
下へ 移動
-
説明
-
下方向へ 移動 します。ただし下 側 に 壁 がない場合のみ 移動 します。
コードの 詳細
-
Playerが 下端 にいなければ(y 座標 < 下端 なら) 縦 方向を実行して下に2だけ 移動 します。
ただしy 座標 = 下端 +1である場合は下に1だけ 移動 します。
横移動
-
説明
-
横方向の道の中央から上下にそれぞれ一定の 幅 (9)の中に Playerのy 座標 がある場合のみ横の方向へ 移動 します。
横の方向へ 移動 する 際 には、Playerのy 座標 をずらして横方向の道の中央へ合わせます
(y 座標 が横方向へ 移動 できる 範囲 にあるかどうかの 判定 と横方向の道の中央へ合わせるために y 座標 をずらす 量 の計算は道 通過判定 でおこないます)。
移動量 が+の 値 であれば右へ、-の 値 であれば左へ 移動 します。
コードの 詳細
-
y 座標 に対して 道 通過判定 を実行します。
横方向の道の中心からの y 座標 のズレが通れる 幅 におさまっていない場合は 座標 をずらす 量 に( 通れる 幅 の半分 (9)+1)が入ってくるので、その場合は次の 処理 (横への 移動 )へ進まずにスクリプトを終了します。
ズレが通れる 幅 におさまっている場合は 以降 の 処理 を実行します。
Playerのy 座標 を 座標 をずらす 量 だけ 変 えて、横方向の道の中央に合わせます。
x 座標 を 移動量 の分だけ 変 えて横に 移動 させます。
x 座標 を渡して 歩く 演出 を実行します。
縦移動
-
説明
-
縦 方向の道の中央から左右にそれぞれ一定の 幅 (9)の中にPlayerのx 座標 がある場合のみ 縦 の方向へ 移動 します。
縦 方向へ 移動 する 際 には、Playerの x 座標 をずらして 縦 方向の道の中央へ合わせます
(x 座標 が 縦 方向へ 移動 できる 範囲 にあるかどうかの 判定 と 縦 方向の道の中央へ合わせるために x 座標 をずらす 量 の計算は 道 通過判定 でおこないます)。
移動量 が+の 値 であれば上へ、-の 値 であれば下へ 移動 します。
コードの 詳細
-
x 座標 に対して道 通過判定 を実行します。
縦 方向の道の中心からのx 座標 のズレが通れる 幅 におさまっていない場合は 座標 をずらす 量 に( 通れる 幅 の半分(9)+1)が入ってくるので、 その場合は次の 処理 ( 縦 への 移動 )へ進まずにスクリプトを終了します。
ズレが通れる 幅 におさまっている場合は 以降 の 処理 を実行します。
Playerのx 座標 を 座標 をずらす 量 だけ 変 えて、 縦 方向の道の中央に合わせます。
y 座標 移動量 の分だけ 変 えて 縦 に 移動 させます。
y 座標 を渡して 歩く 演出 を実行します。
道 通過判定
-
説明
-
進行方向の道の中央からのPlayerの 位置 のズレが通れる 幅 の半分(9)の 中にある場合のみ進行方向への 移動可 と 判定 します。
また進行方向へ 移動 する 際 には、 Playerの 位置 をずらして進行方向の道の中央へ合わせます。そのずらす 量 ( 座標 をずらす 量 )もこのスクリプト内で計算します。
進行方向の道の中央からのPlayerの 位置 のズレが大きく、 通過 できないと 判定 した場合は 座標 をずらす 量 を 通れる 幅 の半分(9)+1としておきます。
コードの 詳細
-
座標 を 道の中心の 間隔 (64)で 割 った 余 りを計算します。
進行方向の道の中央からのズレの大きさを計算しています。
割 った 余 りの大きさに応じて 以下 のA、B、Cのいずれかを実行します。
- A :
割 った 余 りが 通れる 幅 の半分(9) 以下 である場合
(進行方向の道の中央に対するPlayerのプラス方向へのズレが 通れる 幅 の半分(9) 以下 である場合)
- 割 った 余 りを 座標 をずらす 量 にします
( 座標 をマイナス方向に 割 った 余 り分だけずらします)。 - B :
(道の中心の 間隔 (64)- 割 った 余 り)が 通れる 幅 の半分(9) 以下 である場合
(進行方向の道の中央に対するPlayerのマイナス方向へのズレが 通れる 幅 の半分(9) 以下 である場合)
(道の中心の 間隔 (64)- 割 った 余 り)を 座標 をずらす 量 にします
( 座標 をプラス方向に(道の中心の 間隔 (64)- 割 った 余 り)だけずらします)。 - C :
それ以外の場合
(進行方向の道の中央とPlayerの中心との 距離 が 通れる 幅 の半分より大きい場合)
座標 をずらす 量 を( 通れる 幅 の半分(9)+1)にしておきます
(こうしておくことで次の 処理 (横への 移動 )へ進まずにスクリプトを終了するようにします)。
道 通過判定 の 具体的 な 例
-
説明
-
Playerのy 座標 =137
通れる 幅 =18
通れる 幅 の半分=9
割 った 余 り=9となります。
(Playerのy 座標 (137)÷ 道の中心の 間隔 (64)=2 余 り 9) 割 った 余 り(9)は 通れる 幅 の半分(9) 以下 です。
その場合は 座標 をずらす 量 =- 割 った 余 り=-9にします。
Playerのy 座標 (137)に 座標 をずらす 量 (-9)を足すと 128となり、道の中央のy 座標 と同じ 位置 となります。
-
説明
-
Playerのy 座標 =119
通れる 幅 =18
通れる 幅 の半分=9
割 った 余 り=55となります。
(Playerのy 座標 (119)÷ 道の中心の 間隔 (64)=1 余 り 55) (道の中心の 間隔 (64)- 割 った 余 り(55))は 通れる 幅 の半分(9) 以下 です。
その場合は 座標 をずらす 量 = 道の中心の 間隔 (64)- 割 った 余 り(55))=9にします。
Playerのy 座標 (119)に 座標 をずらす 量 (9)を足すと128となり、道の中央のy 座標 と同じ 位置 となります。
-
説明
-
Playerのy 座標 =140
通れる 幅 =18
通れる 幅 の半分=9
割 った 余 り=12となります。
(Playerのy 座標 (140)÷道の中心の 間隔 (64)=2 余 り 12) 割 った 余 り(12)は 通れる 幅 の半分(9)より大きいので左に 移動 することはできません。
その場合は 座標 をずらす 量 を 通れる 幅 の半分(9)+1=10にしておきます。
歩く 演出
-
説明
-
進行方向の 座標 が10の倍数の時に コスチュームを 変更 することで歩いているように見せます。
コードの 詳細
-
座標 を10で 割 った 余 りが0である場合、コスチュームの 歩く1と 歩く2を入れ 替 えます。
ペンギン
主な 動 き
- ゲーム開始時に7本ある 縦 の道のうち、 Playerがいる中央の道以外の6本の道に1体ずつ合計6体を 出現 させます。 それ 以降 は35個ある 交差点 のいずれかに10秒に1体ずつ 出現 させます
(それぞれクローンを作ります)。 - ペンギンを 出現 させる 際 には先に 煙 を 表示 し、その後にペンギンを 表示 します。
- 出現 した後は上下左右のいずれかに 移動 を開始し、 交差点 を通るたびに直線(50%)、 右折 (25%)、 左折 (25%)のいずれかを 選択 して 移動 します。
前方や左右に 壁 があって進めない場合はそれ以外の道へ進みます。
もし3方向が 塞 がっていたら反転して 逆 方向に進むようにします
(現在の仕組みでは3方向とも 壁 となることはありませんが、 念 のためそのような 動 きとしています)。 - 前方に 爆弾 がある場合は反転して 逆 方向に進むようにします。
- 炎 に 触 れたら 消滅 し、スコアが1 加算 されます。

がクリックされたとき
- 非表示 にします。
「Start」を受け取ったとき
- 下記の説明の開始時に配置と途中で出現を実行させます。
開始時に 配置
-
説明
-
7本ある 縦 の道のうちPlayerがいる中央の道以外の6本の道に1体ずつペンギンを 出現 させます。
縦 の道にはそれぞれ5つの 交差点 があり、そのうちの1つにランダムで 出現 させます。
コードの 詳細
-
垂直 位置 を0にします。
水平 位置 を1にします。
Aの 処理 を3回くり返して 複数 の 箇所 にペンギンを 配置 します。
- A :
垂直 位置 を-2から2までのいずれかにして、 クローンをつくるを実行します。
これは中央の道の一本右 隣 の 縦 の道にある5つの 交差点 のうちのいずれか1ヵ所にペンギンを 出現 させます。 0.1秒待ちます。
水平 位置 に-1をかけます。
垂直 位置 を-2から2までのいずれかにして、 クローンをつくるを実行します。
これは中央の道の一本左 隣 の 縦 の道にある5つの 交差点 のうちのいずれか1ヵ所にペンギンを 出現 させます。 0.1秒待ちます。
水平 位置 に-1をかけてマイナスからプラスへ 戻 します。
水平 位置 に1を足して1本外 側 の道へ 移 ります。
開始時のループ内でつくられるペンギンの 出現位置
- 対応 する番号のいずれか1ヵ所に 出現 させます。
途中 で 出現
-
説明
-
35個ある 交差点 のいずれかに10秒に1体ずつペンギンを 出現 させます。
コードの 詳細
-
Aの 処理 をGAME OVERになるまでくり返します。
- A :
10秒待ちます。
垂直 位置 を-2から2までのいずれかにします。
水平 位置 を-3から3までのいずれかにします。
クローンをつくるを実行します。
クローンをつくる
-
説明
-
水平 位置 、 垂直 位置 で示す場所に 煙 を約3 秒 表示 してからペンギンを 出現 させます。
水平 位置 、 垂直 位置 の 値 を 煙 X、 煙 Yにコピーしてスプライト 煙 へ渡します。
コードの 詳細
-
煙 Xを水平 位置 にします。
煙 Yで 垂直 位置 にします。
煙 のクローンを作ります。
自分自身のクローンを作ります。
クローンされたとき
-
説明
-
開始時に 配置 、 途中 で 出現 で指定された 水平 位置 、 垂直 位置 をもとに 実際 の x 座標 、 y 座標 を 設定 して 表示 します。
表示 した後は 移動 し続けます。
交差点 を通るたびにランダムで直進、 右折 、 左折 をします。
コードの 詳細
-
x 座標 を 水平 位置 × 道の中心の 間隔 (64)にします。
y 座標 を 垂直 位置 × 道の中心の 間隔 (64)にします。
コスチュームを前にします。
煙 を 表示 する時間として3秒待ってから 表示 します。
表示 後は 可能 方向 更新 と 移動 をくり返します。
- 水平 位置 、 垂直 位置 と x 座標 、y 座標 の関係
可能 方向 更新
-
説明
-
現在の向きと 座標 から直進、 右折 、 左折 のそれぞれの 可否 を 判定 します。
コードの 詳細
-
直進可、 右折 可、 左折 可をそれぞれ1にリセットします。
上下左右いずれの 端 でもない場合は3つとも1のまま(直進、 右折 、 左折 すべて 可能 )となります。
可能 方向 更新 - 右端 、 可能 方向 更新 - 左端 、 可能 方向 更新 - 上端 、 可能 方向 更新 - 下端 を実行し、直線、 右折 、 左折 のうち実行できないものは0にします。
例 えば 上端 で上を向いている場合は 壁 があって直進できないので 直進可を0にします。 下端 で左を向いている場合はペンギンから見て左に 壁 があるので 左折 可を0にします。
可能 方向 更新 - 右端
-
説明
-
ペンギンが 右端 にいる場合の 判定処理 です。
向きによって実行できない進み方を0にします。 コードの 詳細
-
ペンギンが 右端 にいる場合のみ 判定 を実行します。
右を向いている場合は正面に 壁 があり直進できないので 直進可を0にします。 - 上を向いている場合は右 側 に 壁 があり 右折 できないので 右折 可を0にします。
- 下を向いている場合は左 側 に 壁 があり 左折 できないので 左折 可を0にします。
- 左を向いている場合は 影響 がないので何もしません。
可能 方向 更新 - 左端
-
説明
-
ペンギンが 左端 にいる場合の 判定処理 です。
向きによって実行できない進み方を0にします。 コードの 詳細
-
ペンギンが 左端 にいる場合のみ 判定 を実行します。
左を向いている場合は正面に 壁 があり直進できないので 直進可を0にします。 - 上を向いている場合は左 側 に 壁 があり 左折 できないので 左折 可を0にします。
- 下を向いている場合は右 側 に 壁 があり 右折 できないので 右折 可を0にします。
- 右を向いている場合は 影響 がないので何もしません。
可能 方向 更新 - 上端
-
説明
-
ペンギンが 上端 にいる場合の 判定処理 です。
向きによって実行できない進み方を0にします。 コードの 詳細
-
ペンギンが 上端 にいる場合のみ 判定 を実行します。
上を向いている場合は正面に 壁 があり直進できないので 直進可を0にします。
- 右を向いている場合は左 側 に 壁 があり 左折 できないので 左折 可を0にします。
- 左を向いている場合は右 側 に 壁 があり 右折 できないので 右折 可を0にします。
- 下を向いている場合は 影響 がないので何もしません。
可能 方向 更新 - 下端
-
説明
-
ペンギンが 下端 にいる場合の 判定処理 です。
向きによって実行できない進み方を0にします。 コードの 詳細
-
ペンギンが 下端 にいる場合のみ 判定 を実行します。
下を向いている場合は正面に 壁 があり直進できないので 直進可を0にします。 - 左を向いている場合は左 側 に 壁 があり 左折 できないので 左折 可を0にします。
- 右を向いている場合は右 側 に 壁 があり 右折 できないので 右折 可を0にします。
- 上を向いている場合は 影響 がないので何もしません。
- 左 上端
- 上端
- 右 上端
- 左端
- 端以外
- 右端
- 左下 隅
- 下 隅
- 右下 隅
移動
-
説明
-
ペンギンを 移動 させます。
移動後 に上下左右の 端 を 超 えてしまっている場合は 端 の 座標 にします。 コードの 詳細
-
移動中 を実行します。 x 座標 が 右端 よりも大きい( 右端 を 超 えてしまっている)場合は x 座標 の 値 を 右端 にします。
x 座標 が 左端 よりも小さい( 左端 を 超 えてしまっている)場合は x 座標 の 値 を 左端 にします。
y 座標 が 上端 よりも大きい( 上端 を 超 えてしまっている)場合は y 座標 の 値 を 上端 にします。
y 座標 が 下端 よりも小さい( 下端 を 超 えてしまっている)場合は y 座標 の 値 を 下端 にします。
移動中
-
説明
-
交差点 から次の 交差点 まで 移動 します。
移動 する方向は直進、 右折 、 左折 からランダムに 選択 します。 コードの 詳細
-
方向を決めるを実行します。 進んだ回数を0にします。 Aの 処理 を32回くり返して64歩 移動 します( 交差点 から次の 交差点 まで 移動 します)。
- A :
2歩 動 かします。
もし 炎 に 触 れたら 炎 に 触 れたを実行した後に、このクローンを 削除 します。
もし 爆弾 に 触 れたら 爆弾 に 触 れたを実行した後に、このスクリプトを止めます。
( 爆弾 に 触 れる前の 交差点 まで 戻 ります)。 炎 、 爆弾 のどちらにも 触 れなかった場合は 進んだ回数を1 増 やします。 -
くり返しが 完了 したら進んだ回数を0に 戻 します。
方向を決める
-
説明
-
交差点 で直進、 右折 、 左折 、反転のうちのどの方向に進むのかを決めます( 基本的 に反転するケースはなし)。
コードの 詳細
-
目の前に 壁 があって直進が 可能 (直進可=1)ならA、直進 不可 ( 直進可=0)ならBを実行します。
- A :
左右のどちらかに曲がれる場合は50%の 確率 で直進し、 50%の 確率 で左右を決める を実行して左右のどちらに曲がるのかを決定します。
左右のどちらにも 壁 があって曲がれない場合( 右折 可、 左折 可がどちらも0)は直進します
(ただしこの 判定 は 交差点 でおこなう、 基本的 にどちらも 壁 であるケースはありません)。 - B :
左右のどちらかに曲がれる場合は 左右を決めるを実行して左右のどちらに曲がるのかを決定します。
左右のどちらにも 壁 があって曲がれない場合( 右折 可、 左折 可 がどちらも0)は反転します(180度回して 逆 方向を向きます)
(ただしこの 判定 は 交差点 でおこなう、 基本的 にどちらも 壁 であるケースはありません)。 -
コスチューム 更新 を実行してペンギンの見た目の向きを 変更 します。
左右を決める
-
説明
-
交差点 で 右折 、 左折 のどちらをおこなうのかを決めます。
コードの 詳細
-
もし 右折 不可 ( 右折 可=0)なら 向きを左に90度回して 左折 します。
右折 可( 右折 可=1である場合はAの 処理 を実行します。
- A :
もし 左折 不可 ( 左折 可=0)なら 向きを右に90度回して 右折 します。
もし 左折 も 可能 ( 左折 可=1)なら 同じ 確率 で左右のどちらに曲がります(左右どちらかに90度回します)。
交差点 で進む方向の 確率
-
説明
-
3方向すべてに 移動可 。
まず直進するのか曲がるのかをランダムに決定します。
直進する 確率 を50%、曲がる 確率 を50%としています。
左右に曲がる場合、 左折 する 確率 を50%、 右折 する 確率 を50%としています。
3つのうちのどの方向に進むかの 確率 は直進が50%、 左折 が25%、 右折 が25%となります。
-
説明
-
3つのうちの2つの方向に 移動可 。
まず直進するのか曲がるのかをランダムに決定します。
直進する 確率 を50%、曲がる 確率 を50%としています。
左右に曲がる場合、 移動 できる方向に曲がります。
2つのうちのどの方向に進むかの 確率 は直進が50%、 左折 または 右折 が50%となります。
-
説明
-
3つのうちの1つの方向にのみ 移動可 。
移動 できる方向に進みます。
炎 に 触 れた
-
説明
-
炎 に 触 れたらコスチュームをダメージにした 状態 で2 秒 表示 し、クローンを 削除 します。
この時スコアを 加算 します。
コードの 詳細
-
コスチュームをダメージにし、 スコアを1 増 やして2秒待ちます。
爆弾 に 触 れた
-
説明
-
爆弾 に 触 れたら反転します。
コードの 詳細
-
爆弾 に 触 れたら後ろに2歩 戻 り、向きを180度回して 逆 方向にします。
コスチューム 更新 を実行してペンギンの見た目の向きを 変更 します。
2歩×進んだ回数だけ 移動 して 交差点 まで 移動 します。
くり返しが 完了 したら進んだ回数を0に 戻 します。
コスチューム 更新
-
説明
-
実際 の向きと見た目の向きが合うようにコスチュームを 変更 します。
コードの 詳細
-
向きの 絶対値 が45度より小さい場合(-45度< 向き<45度)はコスチュームを 後ろにします。
向きの 絶対値 が45度以上で135度より小さい場合 (-135度<向き<-45度または45度< 向き<135度)はコスチュームを 横にします。
向きの 絶対値 が135度以上の場合( 向き<-135度または 向き>135度)はコスチュームを 前にします。
爆弾
主な 動 き
- スペースキーを 押 すとPlayerと同じ 座標 に 爆弾 が1個 置 かれます
(Playerが 爆弾 のクローンを作ります)。 - 置 いてから約3秒後に 爆発 します(同じ 座標 に 炎 のクローンを作ります)。
- 他の 爆弾 の 爆発 による 炎 に 触 れるとすぐに 爆発 します。
クローンされたとき
-
説明
-
Playerと同じ 座標 に 表示 し、ふくらんだり 縮 んだりした後に 爆発 します。
炎 に 触 れたらその時点ですぐに 爆発 します。
コードの 詳細
-
x 座標 を Playerのx 座標 にします。
y 座標 を Playerのy 座標 にします。
コスチュームを 爆弾 1にして 表示 します。 0.2秒待ちます。Aの 処理 を5回くり返します。
- A :
炎 に 触 れたら 爆発 を実行し、 1秒待ってからクローンを 削除 します。
コスチュームを 爆発 1と 爆発 2で 交互 に入れ 替 えます。 -
くり返しが終わったら 爆発 を 実行し、1秒待ってからクローンを 削除 します。
爆発
-
説明
-
爆発 音を鳴らし、 炎 のクローンを作ります。
炎 のクローンは 爆発 した 爆弾 と同じ 座標 に 表示 されます。
コードの 詳細
-
非表示 にします。
drum bass3の音を鳴らします。
爆心地 Xをx 座標 にします。
爆心地 Yをy 座標 にします。爆発 した 爆弾 と同じ 座標 に 炎 のクローンを 表示 するために 爆心地 X、 爆心地 Yに 爆弾 の 座標 をコピーしています。
炎 のクローンを作ります。使用中の 爆弾 数を1 減 らします。
炎
主な 動 き
- 爆弾 が 爆発 すると、まずその 位置 に 炎 が1つ作られ、そこから上下左右の4方向に広がっていきます ( 爆弾 が1つ目の 炎 のクローンを作り、外に広がっていく 炎 のクローンは 炎 が作ります)。
- 爆発 した場所に作られた1つ目の 炎 は上下左右それぞれに向けた 炎 のクローンを1つずつ作ります。 作られた 炎 は外 側 に向かって少し 移動 し、同じ方向を向いた 炎 のクローンを1つ作ります。 新しく作られた 炎 も外 側 に向かって少し 移動 し、同じ方向を向いた 炎 のクローンを1つ作ります。 これをくり返して各方向に 炎 が広がっていきます。
- 壁 に当たったらそれ以上は広がりません。
クローンされたとき
-
説明
-
まず 爆発 の中心にクローンが作られ、そこから上下左右の向きの 炎 のクローンを1つずつ(計4つ)作ります。
作られたクローンはそれぞれの向きに 移動 した後に 爆発 の外 側 に向かって同じ向きのクローンを1つ作ります。
その作られたクローンがさらに外 側 に 移動 して1つクローンを作るという 処理 を 続けていくことで 炎 が 徐々 に外 側 に広がっていくようにします。
コードの 詳細
-
爆発 の中心に作られたクローン(タイプ=1)であれば 中心の 炎 を実行し、 1秒後にこのクローンを 削除 します。
2つ目 以降 のクローン( タイプが2以上)であれば 2つ目 以降 の 炎 を実行し、 0.5秒後にこのクローンを 削除 します。
中心の 炎
-
説明
-
爆発 直後に 爆発 の中心に作られた最初の 炎 の 処理 です。
上下左右の方向に広がっていく4つの 炎 のクローンを作ります。
コードの 詳細
-
x 座標 を 爆心地 Xにします。
y 座標 を 爆心地 Yにします。
爆発 した 爆弾 と同じ 座標 に 表示 します。
向きを 上向きにしてクローンを作ります。 (上方向へ広がっていきます。)
同じように右向き、 下向き、 左向きのクローンを作ります。
2つ目 以降 の 炎
-
説明
-
2つ目 以降 の 炎 の 処理 です。
向いている方向に 移動 した後、同じ向きのクローンを作ります。
それぞれのクローンが外 側 に 移動 するクローンを1つずつ作っていくことで外 側 に 炎 が広がっていくようにします。
コードの 詳細
-
上向き、 下向きのクローンは 縦移動 を実行します。
右向き、 左向きのクローンは 横移動 を実行します。
2番目(タイプ=2)、 3番目(タイプ=3)の場合はクローンを作ります。
4番目(タイプ=4)の場合はクローンを作らず、 炎 の広がりはここまでとします。
縦移動
-
説明
-
炎 を 縦 方向(上または下)に 移動 します。
縦 方向の道の中央から左右にそれぞれ一定の 幅 (9)の中に 炎 のx 座標 がある場合のみ 縦 の方向へ 移動 します。
縦 方向へ 移動 する 際 には、 炎 のx 座標 をずらして 縦 方向の道の中央へ合わせます
(x 座標 が横方向へ 移動 できる 範囲 にあるかどうかの 判定 と 縦 方向の 道の中央へ合わせるためにx 座標 をずらす 量 の計算は 道 通過判定 でおこないます)。
コードの 詳細
-
道 通過判定 を実行します。
対象 としてx 座標 を渡します。 縦 方向の道の中心からのx 座標 のズレが通れる 幅 におさまっていない場合は 座標 をずらす 量 に( 通れる 幅 の半分(9)+1)が入ってくるので、 その場合は次の 処理 ( 縦 への 移動 )へ進まずにスクリプトを終了します。
ズレが通れる 幅 におさまっている場合は 以降 の 処理 を実行します。
炎 のx 座標 を 座標 をずらす 量 だけ 変 えて、 縦 方向の道の中央に合わせます。
縦 に 移動 する を実行して向いている方向に 移動 させます。
縦 に 移動 する
-
説明
-
炎 を 縦 方向(上または下)に32(4×8)歩 移動 させます。
途中 で 端 に 到達 した場合はそこで 移動 を終了します。
コードの 詳細
-
Aの 処理 を8回くり返します。
- A :
端 までの 距離 が4より小さく (( 端 の 座標 - y 座標 )の 絶対値 < 4)、 4歩 動 かすと 端 を 超 えてしまう場合は y 座標 を 端 の 座標 にして 移動 を終了します。
端 までの 距離 が4以上ある場合は4歩 動 かします。
絶対値 を 比較 することで上下どちらに 移動 する場合でも同じように 判定 できるようにしています。
横移動
-
説明
-
炎 を横方向(左または右)に 移動 します。
横方向の道の中央から上下にそれぞれ一定の 幅 (9)の中に 炎 のy 座標 がある場合のみ横の方向へ 移動 します。
横方向へ 移動 する 際 には、 炎 のy 座標 をずらして横方向の道の中央へ合わせます
(y 座標 が横方向へ 移動 できる 範囲 にあるかどうかの 判定 と横方向の道の中央へ 合わせるためにy 座標 をずらす 量 の計算は 道 通過判定 でおこないます)。
コードの 詳細
-
道 通過判定 を実行します。 対象 として y 座標 を渡します。
横方向の道の中心からのy 座標 のズレが通れる 幅 におさまっていない場合は 座標 をずらす 量 に (通れる 幅 の半分(9)+1)が入ってくるので、その場合は次の 処理 (横への 移動 )へ進まずにスクリプトを終了します。
ズレが通れる 幅 におさまっている場合は 以降 の 処理 を実行します。
炎 のy 座標 を 座標 をずらす 量 だけ 変 えて、 横方向の道の中央に合わせます。
横に 移動 する を実行して向いている方向に 移動 させます。
横移動中
-
説明
-
炎 を横方向(左または右)に32(4×8)歩 移動 させます。
途中 で 端 に 到達 した場合はそこで 移動 を終了します。
コードの 詳細
-
Aの 処理 を8回くり返します。
- A :
端 までの 距離 が4より小さく(( 端 の 座標 - x 座標 )の 絶対値 < 4) 、4歩 動 かすと 端 を 超 えてしまう場合はx 座標 を 端 の 座標 にして 移動 を終了します。
端 までの 距離 が4以上ある場合は4歩 動 かします。
絶対値 を 比較 することで左右どちらに 移動 する場合でも同じように 判定 できるようにしています。
-
タイプ1
-
爆弾 が 爆発 する 際 に 炎 のクローン(タイプ1)が作られます。
爆発 した 爆弾 と同じ 位置 に 表示 。
同じ 位置 に 炎 のクローン(タイプ2)を4つ作ります。クローンのそれぞれの向きは上下左右にします。
-
タイプ2
-
炎 のクローン(タイプ1)から 炎 のクローン(タイプ2)が4つ作られます。
作られたらそれぞれの向きに4×8=32だけ 移動 します。
同じ 位置 に同じ向きの 炎 のクローン(タイプ3)を1つ作ります。
-
タイプ3
-
炎 のクローン(タイプ2)から 炎 のクローン(タイプ3)が1つずつ作られます。
作られたらそれぞれの向きに4×8=32だけ 移動 します。
同じ 位置 に同じ向きの 炎 のクローン(タイプ4)を1つ作ります。
-
タイプ4
-
炎 のクローン(タイプ3)から 炎 のクローン(タイプ4)が1つずつ作られます。
作られたらそれぞれの向きに4×8=32だけ 移動 します。
タイプ4はあらたなクローンを作りません。
道 通過判定
-
説明
-
進行方向の道の中央からの 炎 の 位置 のズレが通れる 幅 の半分(9)の 中にある場合のみ進行方向への 移動可 と 判定 します。
また進行方向へ 移動 する 際 には、 炎 の 位置 をずらして進行方向の道の中央へ合わせます。 そのずらす 量 ( 座標 をずらす 量 )もこのスクリプト内で計算します。
進行方向の道の中央からの 炎 の 位置 のズレが大きく、 通過 できないと 判定 した場合は 座標 をずらす 量 を 通れる 幅 の半分(9)+1としておきます。
コードの 詳細
-
座標 を 道の中心の 間隔 (64)で 割 った 余 りを計算します
(進行方向の道の中央からのズレの大きさを計算しています)。
割 った 余 りの 大きさに応じて 以下 のA、B、Cのいずれかを実行します。
- A :
割 った 余 りが 通れる 幅 の半分(9) 以下 である場合 (進行方向の道の中央に対するPlayerのプラス方向へのズレが 通れる 幅 の半分(9) 以下 である場合)
- 割 った 余 りを 座標 をずらす 量 にします ( 座標 をマイナス方向に 割 った 余 り分だけずらします)。 - B :
(道の中心の 間隔 (64)- 割 った 余 り)が 通れる 幅 の半分(9) 以下 である場合 (進行方向の道の中央に対する 炎 のマイナス方向へのズレが 通れる 幅 の半分(9) 以下 である場合)
(道の中心の 間隔 (64)- 割 った 余 り)を 座標 をずらす 量 にします。 ( 座標 をプラス方向に(道の中心の 間隔 (64)- 割 った 余 り)だけずらします)。 - C :
それ以外の場合 (進行方向の道の中央と 炎 の中心との 距離 が 通れる 幅 の半分より大きい場合)
座標 をずらす 量 を( 通れる 幅 の半分(9)+1)にしておきます (こうしておくことで次の 処理 (横への 移動 )へ進まずにスクリプトを終了するようにします)。
煙
主な 動 き
- ペンギンを 出現 させる 際 に、 予告 としてその 位置 に先に 煙 を3 秒程 表示 します (ペンギンが 煙 のクローンを作ります)。
- 最初は 薄 く 表示 し、 徐々 に 濃 くしていきます。

がクリックされたとき
- 非表示 にします。
クローンされたとき
-
説明
-
ペンギンが 出現 する直前に 表示 します。
コードの 詳細
-
ghostの 効果 を50にします。
x 座標 を 煙 X× 道の中心の 間隔 にします。
y 座標 を 煙 Y× 道の中心の 間隔 にします。
表示 します。
Aの 処理 を5回くり返した後にこのクローンを 削除 します (大きくしたり小さくしたりをくり返しながら 徐々 に 濃 くしています)。
- A :
ghostの 効果 を10 減 らします( 濃 くします)。
60%、100%と 交互 に大きさを 変 えます。
GAME OVER
主な 動 き
からgame overが送られてきたら 画面中央 の前面に 表示 し、すべてを止める。

がクリックされたとき
- 非表示 にします。
大きさを50%にします。
x 座標 を0、 y 座標 を0( 画面中央 )にします。
GAME OVERを受け取ったら
- 3秒待ってから前に出して 表示 した後、すべてを止めます。
Start
主な 動 き
がクリックされたらコスチュームをStartにして 表示 する。
- クリックされたら 各 スプライトへStartを送り、 非表示 にする( 各 スプライト Startを受け取ってゲーム開始)。
緑の 旗 がクリックされたとき
-
説明
- ゲームスタートの 準備 をする。
必要な 処理
- 座標 の 初期化
Startの 表示
マウスポインターが上に乗ったとき色を 変 える コードの 詳細
-
x 座標 (横の 表示 位置 )を0、 y 座標 ( 縦 の 表示 位置 )を0にします。
コスチュームをStartにして 表示 します。 (ゲーム終了時は 非表示 になっているため)
マウスポインターがこのスプライトに 触 れているときは色を 変 え、 離 れたら元の色に 戻 します。
このスプライトがクリックされたとき
-
コードの 詳細
-
コード「
緑の 旗 がクリックされたとき」が動作しているので、止めます。
各 スプライトにStartを送りゲームを開始します。