Scratchでプログラミング

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

Scratchで野球ゲーム (Part 1) をつくろう!

f:id:kobayashinitya:20211224160438p:plain

今回は、野球ゲームPart 1をつくっていきます。

たぶん、中の人の気分が向いたらPart 2も公開します。

みんなはバッター!

自分のタイミングで(スペースキーを押したら)ボールを打つゲーム!

ピッチャーは緑のはたを押してから3秒後に発射。

キャッチャーがボールを受け取ったら「アウト」終了で、

みんなバッターが打ったら「ヒット!」「ファール」とかですかね?

イメージはこんな感じ↓

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

今回習う単元は、

  • コスチューム変更(バッターとピッチャー)
  • 〇〇秒で座標へ行く(ボールを投げる)
  • メッセージ機能
  • 変数=0まで繰り返す
  • ずっと(スプライト)へいく(キャッチャーとピッチャーを同じ位置にする)

さっそくつくろう!

バッターとボール、ピッチャーとキャッチャー、そして背景を選ぼう

f:id:kobayashinitya:20211213232323p:plain

お決まりのねこちゃん登場。削除して、バッターとボール、ピッチャーとキャッチャーを選ぼう!

f:id:kobayashinitya:20211213232427p:plain

f:id:kobayashinitya:20211227142129p:plain

今度は、背景を選びまっせー!

f:id:kobayashinitya:20211225231802p:plain

うん!いい感じ!次に進もう!

 

バッターが打つコードを組み立てよう

野球はバッターがバットを持って打つ動作が必ずあるので、まずはそれから作って行くぜ!

今回はスペースキーが押されたときコスチュームを変更して、バットを振るように見せます。

コスチュームはバットを振っている女の子のスプライトを選んだときに運良く4つの画像があったので、それを使っていくよ!

f:id:kobayashinitya:20211225232901p:plain

これ動かしたらバットを振っている感じに見えそうだぜ!

 

まずは、文字ベースのヒントから!

最初はかまえているコスチューム。

スペースキーが押されたときにコスチュームを変更してバットを振るように見せる。

f:id:kobayashinitya:20211222142251p:plain

f:id:kobayashinitya:20211215172819p:plain

f:id:kobayashinitya:20211225232814p:plain

f:id:kobayashinitya:20211215173409p:plain

実際に、スペースキーを押して動くかどうか確認してみよう!

いい感じかな?

では、今度はスペースキーをずっと長押ししてみよう。

うーん・・ずっと動きっぱなしだね!この部分を少し修正するぜ。

連打を阻止するコードを組み立てよう

まずは文字ベースのヒントから

スペースキーを押すとコスチュームが動いてバットを打つよね。

スペースキーが押されていないときはどうなるかな?

f:id:kobayashinitya:20211223130735p:plain

f:id:kobayashinitya:20211227131057p:plain

f:id:kobayashinitya:20211227131106p:plain

連打を阻止するには、「スペースキーが押されたではない」を入れるといいよ!

押されていないときまで待つというと結構難しいかもしれないが、、

押されていないときはコスチュームが動かない、つまりバットを打たないということだね!


ピッチャーをつくろう

f:id:kobayashinitya:20211227131520p:plain

野球はボールを投げる人、つまりピッチャーが必要です。

Scratchにいい感じの方がいらっしゃったので、それを選びました。

f:id:kobayashinitya:20211227131639p:plain

3番目だけボールを投げている感じに腕の傾きを変えました。

もし、いい感じのピッチャーがいない場合は自分で描こう!

(わたしは画力が致命的なので、コスチュームは選びました)

 

これも3つあったので、動かしてみたいっすねー!

今回は、緑のはたを押してから3秒後で自動的に投げられるようにします。

 

緑のはたを押してから3秒後で自動的に投げられるコードを組み立てる

とりあえず、秒数はカウントする必要があるので変数をつくりましょっか・・

f:id:kobayashinitya:20211227132428p:plain

f:id:kobayashinitya:20211227132629p:plain

 

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

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

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

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

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

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

 

では、文字ベースのヒントからいきますよー!

まずは最初は座標指定をする。

その後3秒カウントして、、ずっとボールとくっついているようにする。

3秒経ったあと、ボールを投げられる(コスチュームを変化する)

f:id:kobayashinitya:20211227131055p:plain

f:id:kobayashinitya:20211227131057p:plain

f:id:kobayashinitya:20211227133351p:plain

ボールを投げるまで最初は3秒にして、それが0になるまでずっとボールとくっついく。

つまり、スプライト1(ボール)へいく。

また、0になるまで1ずつ減らすコードを組み立てます。

こうすることによって、0になったらずっと0のままでマイナスにならずに、

コスチュームを変更することができますね!

 

ピッチャーからボールにメッセージを送る

ピッチャーがボールを投げるとき、どうしてもボールの位置が動きます。

そのため場所の指定をしていきまっせー!

f:id:kobayashinitya:20211227134101p:plain

こんな感じ!

補足(ほそく)メッセージ機能とは?

メッセージ機能は「お手紙」みたいな感じです。

今の場合、ピッチャーからボールへメッセージ(お手紙)を送るときに使います。

つまり、2個以上のスプライト間で動作を連立して起こしたいときに使います。

f:id:kobayashinitya:20211227134602p:plain

ピッチャーも上手くコスチュームが動いたかな?先に進もう。

 

ボールのコードを組み立てよう!

ボールも野球には必要な要素ですな!ボールをうまく投げられるようにプログラムを組み立てていくよ。

ボールの位置指定をしよう!

最初の位置(緑のはたを押したとき)とメッセージボールの位置を指定するのメッセージを受け取ったときの位置を決めていくよ。

f:id:kobayashinitya:20211227131055p:plain

f:id:kobayashinitya:20211227131057p:plain

f:id:kobayashinitya:20211227134800p:plain

こんな感じかな?

この座標はピッチャーの場所によって変わるから、みんなも実際にピッチャーやボールを動かしてみて調整しよう。

「ボールを投げる」メッセージを受け取ったときのコードを組み立てよう

つまり、ボールを投げるというメッセージを受け取ったときの下に続くコードを組み立てるよ。

最前面に移動して、何秒かでキャッチャーのグローブにいく。

また、グローブに触れたら「アウト!」

バットに触れたらどこかに飛んで、そのいちによって判定を行う。

それぞれ動かないように、スプライトを止める。

f:id:kobayashinitya:20211227140039p:plain

f:id:kobayashinitya:20211227131057p:plain

f:id:kobayashinitya:20211227140100p:plain

こんな感じかな?

大きさを-0.5ずつ変えるを入れると遠近法でちょっとずつ小さくなるようにプログラムしたが・・

無くてもあっても、どっちでも大丈夫!

グローブかバットかに当たったら、このスクリプトを止めるを送ろう。

勝手に動く可能性もありますので・・

f:id:kobayashinitya:20211227134602p:plain

グローブに吸い込まれる感じで、3秒後にボールが動き止まるかな?

上手く成功したら先に進もう!あともう少しだから、頑張れー!

判定のメッセージを受け取ったときのコードを組み立てよう

判定のメッセージをバットに当てたあとに送りましたな。

その後は、ヒットかファールかを表示しよう。

色指定で、ヒットかファールかを判定する

f:id:kobayashinitya:20211227131055p:plain

f:id:kobayashinitya:20211227131057p:plain

f:id:kobayashinitya:20211227141433p:plain

こんな感じかな?

白色の線にボールが乗ったときは、

どっちか分からないということで「微妙・・」としてみたぜ・・

 

チャレンジ

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

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

  • ボールが4つで一塁に進む。フォアボール(Level3)
  • ホームランをつくる(Level3)
  • アウトが3つで交代する(Level2)