風船を撃ち落とすシューティングゲームを作ろう!
シルバー級完成したゲームがこちら。旗を押してスタート!
これから、このゲームを一歩ずつ作っていくよ。
最初からいるねこのスプライトを使うよ。まず、ねこの 名前、位置、大きさ をプログラムで決めよう。
スプライトの名前を 「ねこ」 に変えよう。名前はスプライト情報パネルの一番上で変えられるよ。
@greenFlag が押されたとき
大きさを (60) %にする
x座標を (-180) 、y座標を (-120) にする
新しいスプライトを追加しよう。
「描く」を選んで、コスチュームエディタで十字マーク(+)を描こう。名前を 「まと」 に変えよう。
線の太さは 3〜4 くらいがちょうどいいよ。
@greenFlag が押されたとき
ずっと
[マウスのポインター v] へ行く
end
もうひとつ新しいスプライトを追加しよう。
「描く」を選んで、小さな丸を描こう。名前を 「たま」 に変えよう。
色は好きな色でOK。小さくて丸いのがポイント!
たまは最初、ねこの場所にかくれているよ。旗が押されたら、ねこのところに移動して隠れるようにしよう。
@greenFlag が押されたとき
[ねこ v] へ行く
隠す
スペースキーを押したら、たまのクローン(コピー)を作って発射するよ。
前のステップのプログラムに、「ずっと」と「もし〜なら」を追加しよう。
@greenFlag が押されたとき
[ねこ v] へ行く
隠す
ずっと
もし <[スペース v] キーが押された> なら
[自分自身 v] のクローンを作る
end
end
追加したのはこの部分:
ずっと
もし <[スペース v] キーが押された> なら
[自分自身 v] のクローンを作る
end
end
クローンされたとき、マウスの方向を向いて、端まで飛んでいくプログラムを作ろう。
クローンされたとき
[マウスのポインター v] へ向ける
表示する
<[端 v] に触れた> まで繰り返す
(15) 歩動かす
end
このクローンを削除する
いまのプログラムだと、スペースキーを 押しっぱなし にすると弾が連続で出てしまう。1回押すごとに1発だけ出るようにしよう。
前のステップのプログラムに、1つだけブロックを追加しよう。
@greenFlag が押されたとき
[ねこ v] へ行く
隠す
ずっと
もし <[スペース v] キーが押された> なら
[自分自身 v] のクローンを作る
<<[スペース v] キーが押された> ではない> まで待つ
end
end
追加したのはこの1つのブロックだけ:
<<[スペース v] キーが押された> ではない> まで待つ
このブロックは「スペースキーから指をはなすまで待つ」という意味。これで、キーを押しっぱなしにしても弾は1発しか出ない。
スプライトライブラリから風船を追加しよう。
「スプライトを選ぶ」から 「Balloon1」 を探して追加しよう。
🎈
@greenFlag が押されたとき
大きさを (60) %にする
隠す
ずっと
(2) 秒待つ
[自分自身 v] のクローンを作る
end
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
このクローンを削除する
end
end
クローンのスクリプトに たまとの当たり判定 を追加しよう。
前のステップのクローンスクリプトに、「たまに触れた」判定を追加しよう。
追加したのはこの部分(下に追加するよ):
もし <[たま v] に触れた> なら
このクローンを削除する
end
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
このクローンを削除する
end
もし <[たま v] に触れた> なら
このクローンを削除する
end
end
変数 「スコア」 を作ろう。風船に当たったら +1!
旗のスクリプトに追加:
[スコア v] を [0] にする
クローンのあたり判定を変えよう:
もし <[たま v] に触れた> なら
[スコア v] を (1) ずつ変える
このクローンを削除する
end
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
このクローンを削除する
end
もし <[たま v] に触れた> なら
[スコア v] を (1) ずつ変える
このクローンを削除する
end
end
旗のスクリプト:
@greenFlag が押されたとき
[スコア v] を [0] にする
大きさを (60) %にする
隠す
ずっと
(2) 秒待つ
[自分自身 v] のクローンを作る
end
変数 「ライフ」 を作ろう。風船が左端まで来たら -1!
旗のスクリプトに追加:
[ライフ v] を [3] にする
クローンの左端判定を変えよう:
もし <(x座標) < [-230]> なら
[ライフ v] を (-1) ずつ変える
このクローンを削除する
end
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
[ライフ v] を (-1) ずつ変える
このクローンを削除する
end
もし <[たま v] に触れた> なら
[スコア v] を (1) ずつ変える
このクローンを削除する
end
end
旗のスクリプト:
@greenFlag が押されたとき
[スコア v] を [0] にする
[ライフ v] を [3] にする
大きさを (60) %にする
隠す
ずっと
(2) 秒待つ
[自分自身 v] のクローンを作る
end
新しく 「旗が押されたとき」 のまとまりをもうひとつ作ろう。ライフが0になったらゲームを止めるプログラムだよ。
@greenFlag が押されたとき
ずっと
もし <(ライフ) = [0]> なら
すべてを止める
end
end
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
[ライフ v] を (-1) ずつ変える
このクローンを削除する
end
もし <[たま v] に触れた> なら
[スコア v] を (1) ずつ変える
このクローンを削除する
end
end
旗のスクリプト(その1):
@greenFlag が押されたとき
[スコア v] を [0] にする
[ライフ v] を [3] にする
大きさを (60) %にする
隠す
ずっと
(2) 秒待つ
[自分自身 v] のクローンを作る
end
旗のスクリプト(その2):
@greenFlag が押されたとき
ずっと
もし <(ライフ) = [0]> なら
すべてを止める
end
end
まず変数 「弾数」 を作ろう。変数パレットの「変数を作る」をクリックして、名前を「弾数」にしよう。
旗のスクリプトに 「弾数を10にする」 を追加しよう:
[弾数 v] を [10] にする
次に、ずっとの中を書き換えよう。「もし弾数 > 0なら」 で囲って、弾がある時だけ撃てるようにするよ。
もし <(弾数) > [0]> なら
end
そして、スペースキーの中に 「弾数を-1ずつ変える」 を追加するよ。
[弾数 v] を (-1) ずつ変える
たまの完成プログラム(この時点):
旗のスクリプト:
@greenFlag が押されたとき
[弾数 v] を [10] にする
[ねこ v] へ行く
隠す
ずっと
もし <(弾数) > [0]> なら
もし <[スペース v] キーが押された> なら
[弾数 v] を (-1) ずつ変える
[自分自身 v] のクローンを作る
<<[スペース v] キーが押された> ではない> まで待つ
end
end
end
クローンのスクリプト(変わらないよ):
クローンされたとき
[マウスのポインター v] へ向ける
表示する
<[端 v] に触れた> まで繰り返す
(15) 歩動かす
end
このクローンを削除する
風船に当てたら 弾が3発 もどってくるようにしよう。
クローンの「たまに触れた」の中に追加しよう:
[弾数 v] を (3) ずつ変える
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
[ライフ v] を (-1) ずつ変える
このクローンを削除する
end
もし <[たま v] に触れた> なら
[スコア v] を (1) ずつ変える
[弾数 v] を (3) ずつ変える
このクローンを削除する
end
end
Balloon1の音タブで 「Pop」 を追加しよう(音ライブラリから探してね)。
クローンの「たまに触れた」に音のブロックを追加しよう:
もし <[たま v] に触れた> なら
[Pop v] の音を鳴らす
[スコア v] を (1) ずつ変える
[弾数 v] を (3) ずつ変える
このクローンを削除する
end
Balloon1 の完成プログラム(この時点):
クローンのスクリプト:
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
[ライフ v] を (-1) ずつ変える
このクローンを削除する
end
もし <[たま v] に触れた> なら
[Pop v] の音を鳴らす
[スコア v] を (1) ずつ変える
[弾数 v] を (3) ずつ変える
このクローンを削除する
end
end
風船スプライトを複製して、色を赤や黒に変えよう。音タブに 「Pop」 も追加してね(Balloon1と同じ)。
@greenFlag が押されたとき
大きさを (60) %にする
隠す
ずっと
((3) から (6) までの乱数) 秒待つ
[自分自身 v] のクローンを作る
end
クローンされたとき
x座標を (220) 、y座標を ((-120) から (120) までの乱数) にする
表示する
ずっと
x座標を (-3) ずつ変える
もし <(x座標) < [-230]> なら
このクローンを削除する
end
もし <[たま v] に触れた> なら
[Pop v] の音を鳴らす
[弾数 v] を (-10) ずつ変える
このクローンを削除する
end
end
テキストで作ったゲームを改造すると、こんなゲームにもなるよ!参考にしてみてね。
バルーンシューティングをもっとパワーアップさせよう。