Scratchでプログラミング

誰かしらに何気ない気づきを!

Scratchで射撃(しゃげき)をつくろう!

f:id:kobayashinitya:20211214011849p:plain

今回は、射撃を作ります。

イメージはこんな感じです。

https://scratch.mit.edu/projects/616168602

スペースキーを押すと、弾が発射されてりんご、バナナ、かにに当たると無くなるゲームです。

 

今回習う単元は、

  • 「もしーなら(分岐)」
  • キー操作での移動の仕方
    「キーが押された(調べる)」(銃の移動)
  • x座標の定義
  • クローンの使い方(弾の発射)
  • 〇〇へ行く(動き)
  • 変数の使い方(得点表示)

 

銃をつくろう

f:id:kobayashinitya:20211213232323p:plain

まずはねこちゃんの右上のゴミ箱を押してねこちゃんを削除

f:id:kobayashinitya:20211214012646p:plain

ねこちゃんを削除したぜ!

そのあと、「描く」をクリック!

f:id:kobayashinitya:20211214012812p:plain

みんないい感じに銃を書いてね!

わたしのは、ちょっと下手やな。。

f:id:kobayashinitya:20211214012955p:plain

銃口が上に向くように向きを調節しよう!

いよいよ、コードを組み立てていきます。

銃を右と左の矢印キーで動かしてみよう!

今回も、文字ベースのヒントから自分で組み立ててみよう!

ずっと、もし右矢印キーが押されたらx座標を変える

f:id:kobayashinitya:20211213233426p:plain

わたしは、こんな感じに作ってみたよ!

f:id:kobayashinitya:20211214013426p:plain

f:id:kobayashinitya:20211213234816p:plain

右に動いたかな?
ここで、x座標という言葉が出てきましたね!

説明します!

補足(ほそく)x座標とは?

x座標とは横(よこ)の座標です。今回は使わないんですが、縦(たて)の座標はy座標です。

f:id:kobayashinitya:20211214014629p:plain

x座標では、右に行くと(緑の矢印)だとプラス(+)

                       左に行くと(黄色の矢印)だとマイナス(ー)

 

これをもとに、自分で左矢印キーが押されると左に行くコードを組み立ててみよう!

f:id:kobayashinitya:20211213233426p:plain

いけたかな?実際に動かして確認しよう!

f:id:kobayashinitya:20211213234816p:plain

ちなみに、わたしはこんな感じに組み立てたよ!

f:id:kobayashinitya:20211214013317p:plain

これで銃が左右に動けるようになったね!

 

銃の弾をつくろう!

今回の山場:銃の弾をつくってみよう。ここでは、クローンを使うよ!

クローンをつくる編

ずっともし、スペースキーを押したらクローンを作成する。

銃と銃の弾はずっとくっついて動く。

f:id:kobayashinitya:20211213233426p:plain

ちなみにわたしは、こんな感じに組み立てたよ!

f:id:kobayashinitya:20211214150441p:plain

まず、ずっともしスペースキーが押されたなら

「自分自身のクローン」を作る

 

のブロックを入れるよ。

ここの自分自身をクリックすると他のスプライトのクローンも作成することができる!

違うゲームを作るときに使ってみよう!

 

また、ずっと「銃へ行く」を入れると銃と銃の弾はずっとくっついて動くよ!

f:id:kobayashinitya:20211213234816p:plain

あれれ!スペースキーを押しても何にも動かない!!
なぜだろう??

ここで、クローンについて説明するよ!

 

補足(ほそく)クローンとは?

クローンとは、同じものが何個も作る際に使うよ!

遺伝子の研究でクローン技術がはやって、羊のドリーが誕生したニュースが昔あったね!

今では、様々な分野でクローン解析が進んでいるが、倫理的な側面との両立が難しくなっているね。

それはさておき、プログラミングのクローンの技術では、銃の弾などがめっちゃオススメ!

 

使い方としては、「〇〇のクローンを作る+クローンされたとき」をセットで使います。

作るだけでは何も動かないので、注意!

メッセージ機能みたいに、クローンを作るのとされたときのコードを組み立てる必要があるよ。

※メッセージ機能については過去の金魚すくいの記事を参考にして。

kobayashinitya.hatenadiary.jp

クローンされたとき編

そんな感じで、クローンされたときのコードも組み立てていくよ!今回もヒントから

クローンされたとき、ずっと上に進む

上は何座標を変えれば良かったっけ・・?

f:id:kobayashinitya:20211213233426p:plain

ちなみに、こんな感じに組み立てたよ!

f:id:kobayashinitya:20211214151728p:plain

f:id:kobayashinitya:20211213234816p:plain

どうかな?動いたかな?

f:id:kobayashinitya:20211214151800p:plain

うっわー!めっちゃ連打されて永遠と弾が発射されてるやん!

こんな射撃は見たことないなぁ。

ちょっと改良しよう!

弾を連打できないコード編

じゃあ、連打できないコードをつけ加えるよ!

クローンを作るときに何秒か待ってみたら?

f:id:kobayashinitya:20211213233426p:plain

正解は、、オレンジ色の制御から「1秒待つ」のブロックを入れてね!

f:id:kobayashinitya:20211214152119p:plain

これで連打できないかな?1秒の数字はいい感じに自分で変えてみてね!
ちょっと遅かったら、0.5秒とかにするのもオススメ!

f:id:kobayashinitya:20211213234816p:plain

連打できない感じになったかな?次に進もう!

f:id:kobayashinitya:20211214152339p:plain

うん!いい感じだね!

でも、あれ?銃の弾がずっと残っている状態だね。

気になる。。これを無くしてみよう!

 

クローンを削除する編

今回も、ヒントから行こう!

ずっともし、端(はし)に着(つ)いたらクローンを削除する

端につくってことは・・どういうコードかな?

f:id:kobayashinitya:20211213233426p:plain

いけたかな?先ほどの、クローンされたときのコードに追記するよ!

f:id:kobayashinitya:20211214152759p:plain

わたしは、こんな風に組み立てたよ。

※(別解)線を引いて色指定で〇〇色に触れたら、クローンを削除するでも大丈夫

f:id:kobayashinitya:20211213234816p:plain

端に着いたら銃の弾が消えたかな?消えたら成功!

これでもいいんだけど、ちょっと気になるところがあって、、

f:id:kobayashinitya:20211214153121p:plain

一瞬銃の弾と銃が離れてしまうときがあるんだ。

この原因は、クローンされる前の元の弾が残ってしまっているからなんだ。

だから、クローンされる前の元の弾を隠して、クローンされたときに表示するコードを付け加えよう!

f:id:kobayashinitya:20211214153311p:plain

いい感じに動くかな?

得点をつくろう

この得点の機能は、前回の金魚すくいでもつくったね!

kobayashinitya.hatenadiary.jp

もし、何も見なくて出来そうだったらここで終了してね!

はじめてのお友だちは一緒につくろう。今回も変数を使います。

f:id:kobayashinitya:20211214153807p:plain

オレンジ色の変数のバーを押して「変数をつくる」をクリック

f:id:kobayashinitya:20211214153838p:plain

ここに得点といれるよ。これで変数の完成!

補足(ほそく)変数とは?

変数とは、サイコロみたいなものだよ。

「5」みたいに決まった数字ではなく、変化する数字。

例えば、1+1=Aとするとき、A=2だね。

しかし、1+2=Aとなった場合、A=3になる。

こんなふうに、Aが変化する数字のことを変数と言います。

では実際にコードを組み立てるよ。当てる的(まと:りんご、バナナ、かに)のところに組み立てるぜ!

ずっと、もし的が銃の弾にふれたら、得点を1ずつ増やす

最初(緑のはたが押されたときは得点は0にする)

f:id:kobayashinitya:20211213233426p:plain

ちなみにこんな感じに組み立てたよ!

f:id:kobayashinitya:20211214154440p:plainこれで、当たったら得点が増えるんかな・・実際に動かしてみよう!

f:id:kobayashinitya:20211213234816p:plain

いい感じにまとに当たったら得点が増えたかな?
でも、このままだと的に当たっても分からないよね。。

そこで、的に当たったら隠れるコードを追記するよ!

最初は、表示して的に当たったら隠すコード

f:id:kobayashinitya:20211213233426p:plain

ちなみにこんな感じに組み立てたよ。

f:id:kobayashinitya:20211214154846p:plain

うまくいくかな?動かしてみよう!

f:id:kobayashinitya:20211213234816p:plain

f:id:kobayashinitya:20211214155311p:plain

このように、りんごが消えて得点が1になったかな?

いい感じだったら、同じコードをバナナとかににもつくってみよう。


おまけ:「当たり!」と言うコードをつくろう

おまけとして、りんご、バナナ、かにの的に当たったときに吹き出しで「当たり」と言う感じにしよう!

イメージはこんな感じ。

f:id:kobayashinitya:20211214155816p:plain

このコードは、今までつくった部分に追記するだけでOK!

f:id:kobayashinitya:20211214160039p:plain

「紫色の当たり!と〇〇秒言う」を得点を増やす下の部分に入れたよ。

隠すの下に入れたら、隠れてから吹き出しが出てしまうから変な感じになるかも。。

プログラミングのコードは上から下に実行されていくので、順番にも注意してね!

 

チャレンジ

みんなも色々とデザインを作ったり、機能を追加してみたりしてね!

Levelを5段階で分けてます。もし良かったらチャレンジしてね!

  • 的を動かしてみる(Level4)
  • 的を増やしてみる(Level2)
  • 制限時間をつける(Level2)

※制限時間をつけるコードは金魚すくいの時に紹介しました。

 

kobayashinitya.hatenadiary.jp