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