【Scratch】バッターを追加して野球の動作をプログラムしよう
愛知県稲沢市在住の【中小企業診断士✖️IoTプロフェッショナルコーディネーター】が、ものづくりの楽しさをお伝えする《がちゃラボ》です。
以前ボールを当ててスプライトを消すというプログラムを組みました。
【Scratch】ボールを当ててスプライトを消してみよう今回はScratchを使って、すごく簡単なゲームの基礎の基礎を作ってみたいと思います。1人のスプライト(キャラクター)がボール(のスプライト)を投げて、もう1人のスプライトに当てて消す、というプログラムです。当てられる方のスプライトは動きません。なので、確実にボールは当たります。操作できるようにしたり、ランダムに動くとシューティングゲームっぽくなりますが、まずは「当たったら消える」という部分を作ってみましょう。inakita-monolab.com2019.08.03「ピッチャーが馬にボールを当てて馬を消す」、というプログラムだったのですが、今回は馬のスプライトをバッターに変えて野球のように動作するプログラムを作りたいと思います。
少しずつですが、ストーリーのあるプログラムを組めるようになってきました。今回はプログラムを組む中で初期化をする(最初の準備をする)という、プログラミングの基礎も学んでいきたいと思います。
スポンサーリンク 目次- 使用するブロック
- 【ピッチャー】初期化をする、最初の準備をする
- 作成するプログラム
- 『x座標を〇、y座標を〇にするブロック』
- 【バッター】ボールを打つプログラムを作ろう
- バッターのスプライトを追加しよう
- コスチュームを変えよう
- ボールに合図を送ろう
- 作成するプログラム
- プログラムの解説
- 【ボール】合図を受け取り別の方向へ飛ばす
- ボール(スプライト)の向きを変える
- 準備プログラム
- 投げられたときのプログラム
- バッターに打たれたときのプログラム
- 動作を確認しよう
- まとめ
使用するブロック
『90度に向けるブロック』~スプライトの方向を変えるブロック~ スプライトの向きを変えることができる 『x座標を〇、y座標を〇にするブロック』~スプライトの場所を指定するブロック~ スプライトの位置を変えることができる 『次のコスチュームにする』~スプライトのコスチュームを順番に変えるブロック~ コスチュームを順番に変えたいときに使う【ピッチャー】初期化をする、最初の準備をする
前に作ったピッチャーのプログラム変更して、最初に準備をするためのブロックを追加しましょう。
以前作ったプログラム 作成するプログラム 今回作ったプログラム追加したのは、『x座標を〇、y座標を〇にするブロック』と『コスチュームを〇〇にする』ブロックです。この2つのブロックを追加した意味は、スプライトが変なコスチュームで変な場所にいても、必ず同じ場所で、同じコスチュームで動き始めるようにしたかったからです。
『x座標を〇、y座標を〇にするブロック』このブロックの使い方ですが、x座標は横の位置、y座標は縦の位置を指定するためのものです。スプライトを動かすと、画面右の以下の数字が変わります。“x” や “y” という数字があり、これがそれぞれx座標、y座標となりますので、「x座標、y座標をどうしよう」と悩む場合には、実際にスプライトを動かしてみて、数字を調べてください。
ここで、スプライトが現在どのx座標なのか、どのy座標なのかが分かるピッチャーのプログラムの場合は、「横方向は-150、縦方向は-20の位置にスプライトを置く」ということになります。
この準備のおかげで、決められた位置、決められたコスチュームでプログラムを始めることができるようになるのです。一般的にはこれを「事前準備」や「初期化処理」と言い、どのプログラムにも必ずある処理です。
【バッター】ボールを打つプログラムを作ろう
次にバッターのプログラムを作りましょう。
バッターのスプライトを追加しよう以前組んだプログラムでは馬のスプライトのプログラムを作りましたが、今回はバッターに変えます。なので、馬のスプライトを消しましょう。そして、バッターのスプライトを追加してください。
コスチュームを変えよう今回はコスチュームを変えるために『次のコスチュームにするブロック』を使っています。このブロックはスプライトのコスチュームを順番に変えるためのブロックです。バッターは4つのコスチュームを持っていますので、順番に変わることでバットを振るような動きになります。
ボールに合図を送ろう以前の記事で、『メッセージを送るブロック』を使いました。猫と馬でリレーを行うためのプログラムです。
【Scratch】キャラクター(スプライト)を増やしてリレーさせよう今回はScratchを使って、2人のキャラクターが競争するようなプログラムを作っていきたいと思います。がちゃラボではこれまで1人のキャラクターを動かすようなプログラムを作ってきましたが、それを2人分にするだけです。とても簡単!さあ覚えていきましょう。inakita-monolab.com2019.07.27今回もバッターからボールに合図を送るために『メッセージを送る』ブロックを使います。
メッセージの名前は変えることができるので、今回は「ヒット」という名前にします。
作成するプログラムそれではバッターのプログラムを作ります。
バッター用のプログラム プログラムの解説事前準備をして打つ動作を行う、という流れで作りました。
- 事前準備として位置と、コスチュームを指定します。x座標は150、y座標は-20としました。
- 4秒待つブロックを追加しています。これは、ピッチャーが動き、ボールが飛んできてからバッターが動くように少し待ち時間を入れるために追加しました。
- コスチュームを順番に変えていきます。
- 途中で「ヒットを送る」というブロックを追加しボールに合図を送ります。
4秒とか0.5秒など待ち時間を決めていますが、ここはプログラムを動かしながら好きなように変えてください。
【ボール】合図を受け取り別の方向へ飛ばす
ピッチャーが投げたボールをバッターが打つというプログラムなので、途中でボールの向きを変える必要があります。
ボール(スプライト)の向きを変えるスプライトの方向を変えるには、『○度に向けるブロック』を使います。scratchでは時計の12時の方向を0度、3時を90度、6時を180度としています。
なので、ボールを打って方向を変えるために、今回はプログラムの途中で向きを-30度 (左上に向けて )に変えます。
それではプログラムを説明します。
準備プログラム ボールの事前準備をする- 最初の準備として、ボールの場所と向きを変えるプログラムを作りました。これで毎回スタートボタンが押される時には、同じ場所で同じ方向を向いて開始できます。
- そしてボールを隠すようにプログラムを組みました。ピッチャーが投げた時に表示されるようにするためです。
ここは以前のプログラムのままですが、少しボールが投げられる長さを変えたいので、繰り返し回数を15回に変えました。
バッターに打たれたときのプログラムさて今回のメインですが、バッターがバットを振る動作をした時にボールを飛ばすためのプログラムです。
バッターに打たれたときのプログラムそれでは説明してきます。
- バッターからの合図である「ヒット」を受け取ったときに開始します
- 「-30度」の方向にボールを飛ばすために向きを変えます
動作を確認しよう
それでば、プログラムを実行しましょう。
バットでボールが打たれるような動きになるピッチャーが投げる動きをするとボールが飛んでいきます。そして、バッターがバットを振る動作をすると、ボールが打たれ方向が変わって飛んでいきます。
まとめ
今回はスプライトであるボールの向きを変えることで、ヒットを打つ、というプログラムを作りました。例えば-90度の方向に飛ばせばピッチャー返しとなりますし、-120度くらいだとゴロのような動きになります。
このようにスポーツの1場面を作りましたが、様々なブロックを組み合わせることで色々な場面を作り出すことができそうですね。