mywayなプログラミング生活ブログ

プログラミング関連の記事を書いています。作る様子がわかる様に動画も作っています。

【Scratch2(スクラッチ2)】シューティングゲームをリミックス(7)最終回

myway@おじさんです。

前回の続きで、シューティングゲームのリミックスをします。

今回は、前回作った背景用スプライトをスクロールさせたいと思います。

それと合わせて、以下の内容を作り込みたいと思います。
(1)背景のスクロールしながら敵キャラクターを出現させる。
(2)2回、背景のスクロールが終わればボスを出現させる。
(3)ボスを倒したら、背景をスクロールさせて、敵キャラクターを出現させる。
(4)上の(1)〜(3)を繰り返す。

このような流れにしたいと思います。


動作環境について
OS:MAC OS X(Windowsでも操作はほとんど変わりません)
エディタ:Scratch offline editor(ver.458)

f:id:mywayhaojisan:20180105125648p:plain

1.準備

前回作ったプロジェクトファイルを開いて下さい。

2.背景のコスチュームを追加

同じ背景を繰り返して表示しても良いのですが、折角なので、2パターンの背景を作って、交互に表示する様にします。

コスチュームを右クリックして複製します。

f:id:mywayhaojisan:20180105125934p:plain
追加した結果がこちら

f:id:mywayhaojisan:20180105125952p:plain
このままでは、どちらが表示されているかわからないので、背景の図形の位置を変えます。

f:id:mywayhaojisan:20180105130024p:plain
「コスチューム2」は、下の「林」と「池」を入れ替えました。
この「コスチューム」を切り替えて表示する様にします。

3.「まえにだす」をついか

「はいけい」以外の全てのスプライトに「まえにだす」ブロックを追加します。

・「Spaceship」

f:id:mywayhaojisan:20180105130050p:plain
(※)スクリプトが長いので、抜粋しています。

・「Ball」

f:id:mywayhaojisan:20180105130121p:plain

・「Octopus」

f:id:mywayhaojisan:20180105130208p:plain

・「Ball2」

f:id:mywayhaojisan:20180105130238p:plain

・「Crab」

f:id:mywayhaojisan:20180105130305p:plain

・「Bat2」

f:id:mywayhaojisan:20180105130330p:plain

・「Parrot」

f:id:mywayhaojisan:20180105130354p:plain

・「Ball3」

 

f:id:mywayhaojisan:20180105130443p:plain

・「Parrot2」

f:id:mywayhaojisan:20180105130510p:plain

 

4.へんすうをついか

はいけい用スプライトをスクロールさせるためのへんすうを追加します。

「ステージ」を開いておきます。

f:id:mywayhaojisan:20180105130529p:plain
このへんすうは、はいけい用スプライトを始めに表示させる位置を入れる変数です。

f:id:mywayhaojisan:20180105130550p:plain
このへんすうは、始めに表示するコスチュームを入れるへんすうです。

f:id:mywayhaojisan:20180105130606p:plain
このへんすうは、はいけいがスクロール中かどうかを持っておくへんすうです。

5.「ステージ」のスクリプト

ステージのスクリプトを変更しますが、「ブロック」も一緒に作っておきます。

・「はいけい表示」ブロック

f:id:mywayhaojisan:20180105130628p:plain
「そのた」の「あたらしいブロック」を使って「はいけいをひょうじ」ブロックを作ります。
次に「ていぎ」ブロックを作ります。

f:id:mywayhaojisan:20180105130714p:plain
このスクリプトでは、へんすうに値を入れながら「はいけい」を表示させています。

・「ボス表示」ブロック

f:id:mywayhaojisan:20180105130741p:plain


ボスを表示させるブロックを作ります。

f:id:mywayhaojisan:20180105130759p:plain
このスクリプトでは、「Parrot」を表示させたあと、「ボスのたいりょく」が「0」になるまで待ちます。
そのあと、メッセージ「つぎのゲーム」で、背景のスクロールを開始します。

・はいけいのスクリプト

f:id:mywayhaojisan:20180105130826p:plain
赤い部分が変更した部分です。

(1)「はいけいをひょうじ」ブロックを追加
始めに「はいけい」を表示するため、ここにブロックを追加しています。
(2)「ずっと」ブロックを追加
「ずっと」ブロックを追加して、ずっとゲームを続ける様にしています。
(3)スクロールがおわるまでくりかえす。
「3かいくりかえす」を「スクロールがおわった=1までくりかえす」に変えています。
(4)「ボスとうじょう」ブロックへ変更
変更前は、「Parrotのクローンをつくる」でしたが、「ボスとうじょう」ブロックに変えています。

6.「はいけい」のスクリプト

次に、「はいけい」のスクリプトを作っていきますが、「へんすう」も追加します。

f:id:mywayhaojisan:20180105130855p:plain
へんすうめいには「はいけいのいち(y)ローカル」と入れています。
このへんすうは、クローンごとに、はじめのいちを持っておくへんすうです。
はじめのいちをもっておく事で、スクロールが終わる判定をしています。

次にスクリプトです。

・「緑のはたがクリックされたとき」のスクリプト

f:id:mywayhaojisan:20180105130917p:plain
ポイントとしては、「1そうさげる」ブロックで、他のスプライトの上に表示されないようにしています。

・「あたらしいブロック」

ここでも「あたらしい」ブロックを作っておきます。

f:id:mywayhaojisan:20180105130936p:plain
このブロックは、はいけいをスクロールさせるブロックです。


次に、ていぎブロックを作ります。

f:id:mywayhaojisan:20180105131053p:plain
へんすう「はいけいのいち(y)ローカル」と「yざひょう」が同じ値になるまで「yざひょう」を「-1」ずつ変え、「-345」になれば「345」へ移動させています。

ちなみにですが、「1かいくりかえす」の値を変更する事で、スクロールする回数が変わるので、ゲームの長さを変える事はできます。

・「クローンされたとき」のスクリプト

f:id:mywayhaojisan:20180105131126p:plain
はじめに、へんすうの値から、コスチュームを決めています。
次に、位置のへんすうから「yざひょう」を決めています。
そのあと「スクロール」ブロックでスクロールさせ、最後にへんすう「スクロールがおわった」に「1」を入れています。

・「つぎのゲームをうけとったとき」のスクリプト

f:id:mywayhaojisan:20180105131145p:plain
「ステージ」で追加したメッセージをここで受け取ります。
「はいけい」のクローンは、もう作っているので、ここでは「スクロール」のみを動かしています。

スクリプトは、これで終わりです。

最後に、このまま緑のはたをクリックしてみてください。
「てんすう」のへんすうが表示されなくなる場合があります。
その場合、「データ」にある「てんすう」の横のチェックを外して、再度チェックを入れてください。
そうすると、一番前に表示されると思います。

f:id:mywayhaojisan:20180105131209p:plain

7.おさらい

今回、「ていぎ」ブロックを使っているので、分かりにくかったと思います。
ここでスクリプトの流れをおさらいします。

・ステージの流れ
(1)はいけいをクローン
(2)スクロールが終わるまで、敵キャラクターを表示
(3)スクロールが終われば、ボスキャラクターを表示
(4)ボスの体力が「0」になるまで待つ。
(5)ボスの体力が「0」になれば、メッセージ「つぎのゲーム」を送って(2)へ

・「はいけい」の流れ
(1)クローンされたとき、コスチュームを決めてから、へんすうの「y座標-1」に表示。
(2)「yざひょう」を-1しながら、下へスクロールを開始
(3)スクロールが終われば、へんすうに値を入れて終了。
(4)メッセージ「つぎのゲーム」を受け取った時は(2)へ



今回はここまでです。
これで、そうとうシューティングゲームに近づいたと思います。

それと、今回も動画がありますので、よければ、参考にしていただければと思います。

youtu.be



最後まで読んで頂いてありがとうございます。
皆さんに少しでもお役に立てれば幸いです。

<<シューティングゲームをリミックス(6)