HOME技術レッツ!スクラッチレッツ!スクラッチ (7) インベーダーゲームをつくろう ― たまを発射する

レッツ!スクラッチ (7) インベーダーゲームをつくろう ― たまを発射する

次は、いよいよ攻撃です。
スペースキーを押したら、ロケットから、たまが発射されるようにします。

たまを発射するには、たまの画像が必要になります。

スプライトペインの右下のアイコンにマウスカーソルを合わせると、「スプライトを選ぶ」という文字とともにメニューが4つ表示されます。

一番下の虫めがねアイコンをクリックすると、「スプライトを選ぶ」という画面になります。

「すべて」をクリックして、上から2番目の段のところにある「Ball」という丸いイラストをクリックします。

スプライトペインに、Ballが追加されました。
ステージペインに、たまが表示されているでしょうか?

ちょっと大きいですよね?
そういうときは…そう、初期設定で、たまのサイズを小さくしてあげるのでしたね。

「イベント」から「旗マークが押されたとき」ブロックをスクリプトエリアに置きます。
続いて「見た目」から「大きさを100%にする」ブロックを、「旗マークが押されたとき」ブロックに合体させ、100を50に変えます。

ここで右上の旗アイコンをクリックすると、たまが半分のサイズになっているのがわかると思います。

しかし、最初から、たまが見えているのはおかしいですよね?
たまはスペースキーを押したら発射されるようにするので、最初は見えていない状態にしないといけません。

「見た目」から「隠す」というブロックを、「大きさを50%にする」ブロックの下にくっつけます。

旗アイコンをクリックすると、たまが消えたでしょうか。

これで、たまの初期設定ができました。

スペースキーを押したらたまを表示する

スペースキーを押すと、たまを表示するようにします。
「イベント」から、「スペースキーが押されたとき」ブロックを選んでスクリプトエリアの空いている場所に置きます。

「制御」から、「自分自身のクローンを作る」ブロックを選び、「スペースキーが押されたとき」ブロックの下にくっつけます。

「クローン」とは、コピーのようなものです。
「自分自身のクローン」ということは、たまのコピーを作る、という意味です。
なぜコピーをつくるのでしょうか?

このあと、たまを発射できるようにしますが、もし、たまを連射できるようにしたい場合には、たまのスプライトを連射する数だけ作らなければなりません。でも、それだとスプライトペインに、たまがたくさんできてしまい、それらのたま一つずつに初期設定などをするのは、かなり面倒ですよね?

だから、たまのスプライトは1つだけにして、あとはクローンをつくる、というようにしておけば、いくらでもコピーをつくることができるのです。

さて、今、スペースキーが押されたら自分のクローンをつくるところまでやりました。
でも、これだけでは、たまは表示されません。

「制御」から「クローンされたとき」ブロックを、スクリプトエリアの空白の部分においてください。

「見た目」から「表示する」ブロックを「クローンされたとき」ブロックの下にくっつけます。

これで旗アイコンをクリックしてみてください。
たまは消えていますが、スペースキーを押すと、たまが表示されますね?

でも、たまが表示される場所が、ロケットがどこにあってもいつも同じ場所です。
たまはロケットから発射されるので、ロケットの場所に出てこないとおかしいですよね。

「動き」から「どこかの場所へ行く」ブロックを選んで、「表示する」ブロックの下にくっつけます。
「どこかの場所」をロケットのスプライト名である「スプライト1」に変えます。

これで、たまのクローンがつくられたときに、ロケットの位置で表示されるようになります。

たまを上に動かす

ここまでで、スペースキーを押すと、自分の位置にたまが表示されるようになりました。
でも、たまはその場に残ったままになっています。

うったたまは、上に自動的に動いていかないと敵を倒すことができません。

「制御」から「ずっと」ブロックを選んで、「スプライト1へ行く」ブロックの下につけます。

「動き」から「y座標を10ずつ変える」ブロックを選び、「ずっと」ブロックの中に入れます。

旗アイコンをクリックして、ロケットを動かしながらスペースキーを押してみてください。
きちんと、ロケットの位置から、たまが発射され、画面の上まで飛んで行ったでしょうか。

画面の上まで行ったたまを消す

今のままでは、うったたまは、画面の上にずっと残っています。
画面の上まで行ったら消えるようにしましょう。

「制御」から「もし なら」ブロックを選び、「y座標を10ずつ変える」ブロックの下にくっつけます。

「演算」から「 >50 」ブロックを選び、「もし なら」の穴に入れます。

「 >50 」ブロックの50を、170に変えます。

「 >170 」ブロックの左側の穴に、「y座標」ブロックを入れます。

「制御」から「このクローンを削除する」ブロックを選び、「もし なら」ブロックの間に入れます。

たまが画面の上ぴったりに表示されたときのy座標は170なので、170より大きい座標になったら画面の外に出た、ということにして、たまを消す、というプログラムにしました。

「クローンを削除する」ということは、クローンとして作った、たまを消す、ということなので、画面からたまが消えることになります。

たまを一度に一発しかうてないようにする

今回のルールでは、たまは一度に一発しかうてないようにする、ということにしていました。
連射できた方が楽しいと思うかもしれませんが、連射できてしまうと、かんたんに敵を倒すことができてしまいます。
ゲームを少し難しくするために、たまは一度に一発しかうてないようにします。

たまが画面にあるときは、次のたまは出てこない、というようにします。
そのためには、たまのクローンがあるときには、スペースキーを押してもクローンをつくらないようにすればよいのです。

でも、「クローンがあるとき」というブロックはありません。

そこで使うのが「変数」です。

変数とは、「中身を自由に変えることができる入れ物」のようなものです。

と言っても何のことだかわからないですよね?

実際にやってみましょう。変数はとても便利なもので、プログラミングでは必ずと言っていいほど使うものです。
このインベーダーゲームをつくるときも、このあとも何度か変数を使いますので、それで変数の使い方を何となく覚えてください。

「変数」から、「変数を作る」をクリックします。

まずは変数の名前を決めます。
「新しい変数名」という画面になりましたか?
ここで自分の好きな名前をつけます。

でも、覚えておいてください。
変数の名前は、「何に使う変数なのか」が読んでわかるようになっていた方が便利なのです。

ここでは、たまがあるかないかを判定するための変数なので、「たまの存在」という変数名にしました。

「すべてのスプライト用」「このスプライトのみ」という選択肢があります。
「すべてのスプライト用」とは、他のスプライトからもこの変数を使えるようにする、という意味です。
「このスプライトのみ」にした場合には、他のスプライトやクローンからはこの変数を使うことができなくなります。

わざわざ他のクローンからは使えないようにして不便にすることはないんじゃないか、と思うかもしれません。
でも、それぞれに意味があるのです。

「すべてのスプライト用」にした場合には、すべてのスプライトやクローンから同じ変数を使うことができるので、あるクローンで設定した変数を、別のクローンで使いたい、というときに役立ちます。

「このスプライトのみ」にした場合には、他のスプライトやクローンでは使えなくなる一方で、他のスプライトやクローンでも、同じ名前の変数を別につくることができます。
同じ名前だけど、変数の中身はそれぞれのスプライトやクローンで別々にしたいとき、などに使うことができます。

この変数の意味も、今は何となく理解しておいてください。

さて、ここでは先ほど設定した「たまの存在」変数は、他のクローンでも使うので、「すべてのスプライト用」にしておきます。

さて、「スペースキーが押されたとき」ブロックの下にくっついていた「自分自身のクローンを作る」ブロックを外して、代わりに、「もし なら」ブロックを追加しましょう。

そして、「演算」から「 =50 」ブロックを選び、「もし なら」ブロックの穴に入れます。

「 =50 」の左側の穴には、「変数」から「たまの存在」ブロックを入れます。
右側の数字は、「0」にします。

「変数ブロック」から、「たまの存在を0にする」ブロックを選び、「もしたまの存在=0なら」ブロックの中に入れます。
「たまの存在を0にする」の数字を1にします。

外しておいた「自分自身のクローンを作る」ブロックを、「たまの存在を1にする」ブロックの下にくっつけます。

これで、スペースキーを押したときに、「たまの存在」変数が0のときは、たまのクローンをつくります。
それと同時に、「たまの存在」変数を1にすることで、もう一度スペースキーを押してもクローンがつくられなくなります。
「たまの存在」変数が0ではないときには、クローンをつくらないからです。

でも、このままだと、一度たまを発射したら、次のたまをうつことができません。
たまが画面から消えたタイミングで、「たまの存在」変数を0に戻してあげる必要があります。
そのためには、「クローンされたとき」ブロックの、「もしy座標>170なら」ブロックの中にある、「このクローンを削除する」ブロックの上に、「たまの存在を0にする」ブロックを入れます。

これで、たまが画面の上に行って消えたら、もう一度たまをうつことができるようになります。

ところで、ゲームスタート時は、たまをうてるようにするので、初期設定のときは、「たまの存在」変数は0にしておかなければなりません。

「旗マークが押されたとき」ブロックの「隠す」ブロックの下に「たまの存在を0にする」ブロックをくっつけます。

これで、一発うったら、たまが消えるまでは次のたまをうつことができなくなりました。

次回は敵を表示させましょう!

「レッツ!スクラッチ」コンテンツリスト

関連記事

レッツ!スクラッチ (15) インベーダーゲームをつくろう ― アイテムをとってパワーアップさせよう!

さて、ゲームにとって欠かせないのは、パワーアップです。 アイテムをとってプレイヤーがパワーアップすることで、より敵を倒しやすくする、というものです。 今回は、一定数の敵を倒すと、アイテムが降ってきて、…続きを読む

レッツ!スクラッチ (13) インベーダーゲームをつくろう ― 爆発させよう!

このインベーダーゲームでは、たまをうって敵に当たったときに点数が入ったり、敵が自分の陣地まで来たときにゲームオーバーになったりする処理を入れてきましたが、いずれももう一味ほしいと思いませんか? そう、…続きを読む

レッツ!スクラッチ (16) インベーダーゲームをつくろう ― 音を出そう!

これまでゲームが面白くなるように色々と工夫をしてきましたが、一つまだ手を付けていないことがあります。 それが「音を出す」ことです。 今回は、ゲームスタートのとき、たまをうった時、敵にたまがあたったとき…続きを読む

レッツ!スクラッチ (12) インベーダーゲームをつくろう ― ゲームの難易度をあげよう!

点数もつくようになったので、これでほぼゲームとして完成しました。 しかし、このままでは物足りないですよね? まずはゲームが単調すぎて、かんたんです。 慣れてしまえばあっという間につまらなくなってしまう…続きを読む

レッツ!スクラッチ (8) インベーダーゲームをつくろう ― 敵を表示して動かす

インベーダーゲーム、ついに敵の登場です。 まずは、敵の画像を選ぶところからです。 右下のスプライトペインから、「スプライトを選ぶ」アイコンにマウスカーソルを持っていき、虫めがねアイコンをクリックします…続きを読む

レッツ!スクラッチ (17) インベーダーゲームをつくろう ― ゲームスタートボタンをつくろう

今回はスタートボタンをつくります。 ゲームを始めるときに、画面に表示されている「START」などの文字、もしくはボタンのことです。 「旗マーク」をゲームのスタートボタンとしてもよいのですが、ゲームっぽ…続きを読む

レッツ!スクラッチ (10) インベーダーゲームをつくろう ― 敵を倒せるようにしよう!

今回でほぼ、ゲームとして遊べるプログラムが完成します。 今回は、ロケットがうった、たまが敵に当たったら敵を消す、という処理をつくります。 たまが敵に当たった時の処理 たまが敵に当たったかどうかの判定は…続きを読む

レッツ!スクラッチ (2) スクラッチのインストール

では、さっそくビジュアルプログラミング言語、スクラッチをつかっていきましょう! みなさん、Windowsパソコンは持っていますか? Androidスマホやタブレットでもできないことはありませんが、パソ…続きを読む

レッツ!スクラッチ (5) インベーダーゲームをつくろう ― 画面にプレイヤーを表示しよう

さあ、ゲームの設計もかんたんですが、おわりました。 いよいよプログラミングをしていきましょう! 最初は、画面を用意して、プレイヤーを表示するところまでをやっていきます。 画面の背景を指定しよう! まず…続きを読む

レッツ!スクラッチ (14) インベーダーゲームをつくろう ― インベーダーに攻撃させよう!

これまでインベーダーは移動してくるだけでした。 今回はインベーダーも移動しながらたまをうってくるようにしてみましょう。 これでぐっと難易度が上がりますね。 いつものとおり、まずは敵がうってくるたまのス…続きを読む