Scratchでプログラミング

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

Scratchでサッカーゲームをつくろう!

f:id:kobayashinitya:20211223014648p:plain

今回は、有名なスポーツの1つであるサッカーをScratchでつくっていきます。

ルールとしては、5秒後にランダムに飛んでくるボールを、ゴールキーパーである、ねこちゃんを動かしてゴールを阻止するゲームです!いわゆるPK戦ですな!

(わたしは全くサッカーについて詳しくないんで、感覚で作ってまっせー)

イメージはこんな感じ↓

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

今回習う単元は、

  • 枠の中でスプライトを動かす(色での判別)
  • もし〇〇に触れたなら・・の処理
  • 乱数の角度に向ける
  • 「かつ」の処理

 

ゴールキーパーの動きを組み立てる

ゴールキーパーを選ぼう

f:id:kobayashinitya:20211213232323p:plain

サンプルは、こんな感じで今回はねこちゃんをゴールキーパーにしてます。
みんなは自分の好きなスプライトを選んでね!

ボールを選ぼう

好きなボールを選んでみよう!(以下省略)

背景を選ぼう

f:id:kobayashinitya:20211223125224p:plain

背景はサッカーの感じの背景を選ぼう!

f:id:kobayashinitya:20211223125658p:plain

全部揃ったかな?

f:id:kobayashinitya:20211223130109p:plain

では先に進もう!次は実際にゴールキーパーの動きのコードをつくっていくよ。

いつも通り、文字ベースのヒントから

最初は真ん中にゴールキーパーがスタンバイ。

白色のゴールの端から端までしか動かないように設計(色判別・「かつ」を使用)

白色に触れたらちょっと戻る感じ!

 

今回は考える時間3分は短いかな・・5分10分考えてみよう!!

f:id:kobayashinitya:20211223130735p:plain

ちょっと複雑だったかな?ヒントその2もいくぜー!

矢印キーが押されていて、また白色のゴールの端に触れていないときに動く。

また、白色に触れたら1歩戻る

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211223131627p:plain

まず最初は、スタートの座標を指定。

その後、ずっと「回転方向を左右のみにする」を挿入。

もし入れなかったら、ひっくり返ってしまう可能性があるかも(ならない場合もありますが、念のため・・)

 

次に、もしキーが押された「かつ」白色(ゴールの端の色)に触れたではないなら、

左右に動かすをずっとの中に入れる。

 

また、もし白色(ゴールの端の色)に触れたなら-1歩動かすを組み立てる。

白色(ゴールの端の色)に当たったら、少し下がることによって、枠の中だけで動くことが可能。

これがないと白色(ゴールの端の色)に触れたら、キーを押しても動かなくなってしまうので、めっちゃ重要!

f:id:kobayashinitya:20211215173409p:plain

実際に、白色(ゴールの端の色)の中でしかゴールキーパーは動かないかな?

ボールのコードを組み立てる

今回は、5秒経過したらボールが発射?される感じのコードを組み立てるぜ!
まずは、投げる前と投げた後のコスチュームを描きます。

f:id:kobayashinitya:20211224142941p:plain

投げる前はどの方向に飛んでいくか分からないと大変なので、

右クリック+複製をして

f:id:kobayashinitya:20211224143140p:plain

「矢印」を描きます。

投げられた後は矢印を消すためいつものコスチュームで大丈夫!

 

秒数を計測するコードから!

最初の秒数は0で1秒待って1ずつ変数を変える

以前にもずっと、変数は出てきているね。念のため今回も紹介するよ。

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

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

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

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

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

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

f:id:kobayashinitya:20211213233426p:plain

f:id:kobayashinitya:20211215172819p:plain

まずは時間の変数を作ります。

f:id:kobayashinitya:20211214153807p:plain

変数をつくるをクリック!

f:id:kobayashinitya:20211214001203p:plain

(制限)時間と入力→OK!

これで変数が完成!

コードはこんな感じ!

f:id:kobayashinitya:20211224142242p:plain

緑の旗が押されたとき、まず制限時間を0にすることでどんな時でも最初からカウント可能!

また、ずっと1ずつ変えることで変数が増えていく。またそれだけだと急激に数字が変わるので「1秒待つ」で待ってあげる!

f:id:kobayashinitya:20211215173409p:plain

数字が1秒ずつ増えていくかな?

これでカウントできたぜ!先に進もう。

最初のボールの位置を決めよう

最初のボールの位置を決めるにはどのブロックが必要かな?

f:id:kobayashinitya:20211215173411p:plain

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211224142822p:plain

x座標を〇〇、y座標を〇〇にするをつけ加える。

これで最初の座標を決められます。

次にコスチュームも指定しておきましょう。

f:id:kobayashinitya:20211224145133p:plain

なぜか念のため表示するをはさみましたが、全然なくて大丈夫でっせ。

コスチュームを〇〇(矢印付き)にするを入れます。

次に行きましょう!

 

5秒経つまでの動作を組み立てる

5秒経ったら、サッカーボールが発射されますが、その前は色々な角度に傾けて

どこに飛んでいくか分からないようにしていきまっせ!

まずはヒントから

5秒経つまで乱数の角度に向けるのを繰り返す

f:id:kobayashinitya:20211222142251p:plain

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211224145457p:plain


時間=5まで中のコードを繰り返す。
-30〜30までの乱数度に向けるで5秒経つまでどんな角度にするのかを決めます。

-30〜30は仮に入れているので、みんなはいい感じの数字を入れてみてね!

-30〜0は左側・0〜30は右側に傾く角度だよ。

 

※ちなみにこの時は、矢印が上に向いている状態を0度としていますので、最初の角度によって数字が変わる可能性が高いです。

f:id:kobayashinitya:20211215173409p:plain

めまぐるしく5秒間角度が変わっているかな?

先に進もう!

5秒経った後のコードを組み立てよう

5秒間繰り返すの下に5秒以降のコードを組み立てるよ。

まずは、ヒントから

コスチュームを変えて飛んでいく

f:id:kobayashinitya:20211215173411p:plain

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211224145915p:plain

こんな感じかな?

飛んでいく部分は「〇〇歩動かす」の部分だよ。

x座標やy座標にすると縦や横にしか飛ばないので、せっかく角度を変えても意味がなくなってしまう。

だから今回は「〇〇歩動かす」がバッチリ!

 

それぞれ当たり判定やはずれ判定を加える

ボールをねこちゃんがキャッチできたら「はずれ」にする+「すべて止める」

ボールをねこちゃんがキャッチできずにゴールしたら「あたり」にする+「すべて止める」

ボールがゴールから外れてしまったら「すべて止める」

この条件はみんなで各自変えてみてね。

f:id:kobayashinitya:20211223130735p:plain

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211224150415p:plain

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

スプライト2はねこちゃんです。

「ずっと」の中に色々な条件(もし・・・なら)を加えていくといいよ!

f:id:kobayashinitya:20211215173409p:plain

自分の思い通りに動いたかな?

チャンレンジ

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

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

  • サッカーボールを何回も投げられるようにする(クローンを使ってみよう)(Level3)

    クローンの技術は射撃(しゃげき)の弾の部分と同じだよ

    kobayashinitya.hatenadiary.jp

     

  • 得点をつける(Level2)

    金魚すくいを見ると参考になるかも?

    kobayashinitya.hatenadiary.jp

  •  ゲームクリアやオーバー画面を実装する(Level2)
    「もし・・なら」の条件の中に「背景を変えるコード」をいれる