Scratchで野球ゲームを作るプログラミング
@Press / 2020年9月18日 12時0分
0.全体構想
ピッチャーとバッターの勝負だけを切り取ってゲームにする。
投げる球種を選んで、バッターも狙い球を選ぶ。
それがピッタリ当たったら打たれるけれど、外れたら空振りする。
プログラムの大まかな流れとしては、
①「スペースキー」を押したらボールがセットされる
②バッターが球種を選ぶ(ランダム)
→変数:「ばったー」を設定
ストレート=0、カーブ=1、フォーク=2
③プレイヤーが球種を選択する(キーボードの矢印キー)
→変数:「へんかきゅう」を設定
「↑」ストレート=0、「←」カーブ=1、「↓」フォーク=2
④ボールを動かすアニメーション
⑤変数「ばったー」と「へんかきゅう」が同じ
→うった後の動作へ
・ボールの動き
・バッターのスイング(音を鳴らす)
・打球の動き(変数「だきゅう」で方向設定)
変数「ばったー」と「へんかきゅう」がちがう
→空振りの動作へ
・ボールの動き
・バッターの動き
以上のようになります。
まだ何を言っているのか分からないと思うで、このあとの流れに沿ってプログラムをしてみましょう。
そうすると、まずは
作成しなければいけない変数は「ばったー」「へんかきゅう」「だきゅう」の3つということになるので、作成しておきます。
画像 : https://newscast.jp/attachments/Ve4oHVgVwpzBCXrwNJSd.jpg
作り方は「変数」のところの「変数を作る」を押して、
画像 : https://newscast.jp/attachments/EHi8lq3AFe5tvkzwu7SA.jpg
このように変数の名前を入力していきます。
※「すべてのスプライト用」の方にチェックを入れたままにして下さい。
次にキャラクター(スプライト)を作成していきましょう。
1.スプライトの作成
画像 : https://newscast.jp/attachments/8izJelA2jfjh2WFRfpU0.jpg
このプログラムのスプライト(キャラクター)は3つです。
このラインより上のエリアが無料で表示されます。
まずはボールを作ります。
画像 : https://newscast.jp/attachments/9kYsccCm6ZsRvCUNqmxj.jpg
右下のスプライトを選ぶを押してみましょう。
その中で、スポーツの中から「Baseball」を選びます。
画像 : https://newscast.jp/attachments/CvRz2tZKCdjyql7wLw8y.jpg
画像 : https://newscast.jp/attachments/pbVBHGAOqklgTjVyjHpu.jpg
スプライトを選ぶを押して
同じように、バッターとキャッチャーも作りましょう。
バッターはこんな流れです。
画像 : https://newscast.jp/attachments/iiP8ZMi1GoLCJ7TQERsu.jpg
バッターの画像を選ぶ
キャッチャーも同じように・・・
画像 : https://newscast.jp/attachments/YErJT5IYAAtokqVFDYAy.jpg
同じようにスプライトを選ぶを押して
画像 : https://newscast.jp/attachments/UQlfRqsxxFbnGelmeU9g.jpg
キャッチャーの画像を選ぶ
画像 : https://newscast.jp/attachments/FP04KcBr5CGC1EXbKPR5.jpg
すると、スプライトの一覧はこうなっています。
今回は、いつものネコのスプライトは使わないので、消してしまいます。
ネコの「スプライト1」を選んで、右上の「×」マークをクリック。
画像 : https://newscast.jp/attachments/zsf9rQyqpSGVdrEyGEa0.jpg
これで消えます。
次に、背景を野球のグラウンドにしたいので、背景も変えましょう。
右下のステージの一番下のボタンをクリックして下さい。
「背景を選ぶ」を押すと・・・
画像 : https://newscast.jp/attachments/C7nIlf1cYG6fdcDpm4l5.jpg
背景を選ぶを選択する
画像 : https://newscast.jp/attachments/S9MLSc1XXSJAhkILi4iV.jpg
「スポーツ」を選んで、「Baseball1」の背景を選びましょう。
これでスプライトと背景の準備ができました。
2.スプライトの配置と設定
2-1 ボールの配置
ボールのスプライトを選び、コードのところに、このようにブロックを作ります。
画像 : https://newscast.jp/attachments/ICcVnP2RUwHQ6MAbuKbp.jpg
これで「スペースキー」を押したらマウンドのところにボールがセットされます。
※「2層手前に出す」はキャッチャーやバッターと重なったときに、手前に表示されるようにするための命令です。
※「大きさを90%にする」はスプライトの元々の大きさだと少し大きいと感じたのでちょっとだけ小さく設定しました。このあと、ボールが動くと大きさが変わっていくので、ここで大きさもリセットしています。
2-2 バッターの配置
画像 : https://newscast.jp/attachments/enwAcPvSWj7XR9b5TSn2.jpg
バッターボックスの辺りに配置したいので、このように設定しました。
バッターのスプライトを選び、コードにこのようなブロックを組み合わせます。
画像 : https://newscast.jp/attachments/OK3hLwR251n79Wj6M9aq.jpg
「スペースキー」が押されたらバッターもきちんとセットされるようにしています。バッターにはコスチュームがいくつかあるので、初めは「batter-a」を選ぶようにし、ボールより後ろで、キャッチャーより前に出すために「1層手前に出す」という命令をつけています。
また、ここで、変数「ばったー」に0から2までの数字をランダムで入れています。これが、バッターが待っている球種ということになります。
ストレート=0、カーブ=1、フォーク=2
という設定にしました。
2-3キャッチャーの配置
キャッチャーのスプライトもコスチュームがいくつかありますが、ボールの変化によってキャッチャーミットが動くようにしたいので、ミットの位置を変えたコスチュームを作っておきましょう。
キャッチャーのスプライトを選び、左上の「コスチューム」というタグを選びます。
画像 : https://newscast.jp/attachments/utF96RQJE1BaqQCdftSY.jpg
キャッチャーの上から2番目のコスチューム(catcher-b)がキャッチするときのコスチュームなので、これをコピーします。左側の絵のところでマウスの「右ボタン」を押してみると「複製(ふくせい)」「削除(さくじょ)」が出てくるので「複製(ふくせい)」を選び、同じことをもう1回やっておきます。
これで同じキャッチャーのコスチュームが3つできました。
(catcher-b2とcatcher-b3)
上から2番目のコスチューム(catcher-b)はそのままにして、3番目にできたコスチューム(catcher-b2)を選んで下さい。
そして、矢印マークを選んだあとで、キャッチャーミットのところをクリックしてみましょう。
画像 : https://newscast.jp/attachments/s8p8zx4IKfMFTc2sjzR5.jpg
画像 : https://newscast.jp/attachments/06kw0MzNXIdLydji0KwV.jpg
すると、こんな風にキャッチャーミットの部分の周りが四角く囲まれています。これでこの部分だけを動かすことができます。
「↑」「↓」「→」「←」の矢印キーを押しながら動かしてみてください。
まずは、落ちる球を取るとき(catcher-b2)
画像 : https://newscast.jp/attachments/LLgY9bEGKdCIX2O3Yylm.jpg
(catcher-b2)
そして、コスチュームを上から4番目に変えて同じようにカーブを取るときは(catcher-b3)
画像 : https://newscast.jp/attachments/DLoOEPB0iqByXyaC0An7.jpg
(catcher-b3)
これでキャッチャーのコスチュームができたので、左上の「コード」のタグを選び、次のブロックを入れておきます。
画像 : https://newscast.jp/attachments/r0EUJEwspVeSZ7N6T5BX.jpg
3.ボールを投げる・打たれる判定
ここからは球種を選び、ボールが投げられて、打たれるかどうか判定するプログラムを作っていきます。
まずは球種選びです。
ボールのスプライトを選んで、コードのところに次の命令を作ります。
画像 : https://newscast.jp/attachments/gBEQSQEU21WUHE8UoM38.jpg
そして、球種が決まって、ボールが投げられたあとの動きを右のように作ってコードに追加します。
簡単に流れを説明すると、
球種を選んだときに出された「メッセージ1」を受け取った
↓
ボールを動かす
↓
■「ばったー」と「へんかきゅう」が同じ
→打たれた動きへ
■「ばったー」と「へんかきゅう」が違う
変数「へんかきゅう」=0なら
→ストレートの動き
変数「へんかきゅう」=1なら
→カーブの動き
変数「へんかきゅう」=2なら
→フォークの動き
画像 : https://newscast.jp/attachments/OFY4eh9drFQaUyNw6FOl.jpg
※「うった」を送る というブロックがありますが、これを作るには、右図の②の部分をクリックすると、「新しいメッセージ」というメニューが出るのでそれを選びます。
画像 : https://newscast.jp/attachments/iBwWGtFiZPYr15M2BEpm.jpg
新しいメッセージ名を入力する画面が出るので、
「うった」というメッセージ名と「うったあと」というメッセージ名を登録しておきましょう。
画像 : https://newscast.jp/attachments/SLjGSnBXFdrnsTv5xNe4.jpg
画像 : https://newscast.jp/attachments/cLQbTdh6CHEnPjjrVzh7.jpg
4.バッターの動き
「うった」というメッセージはバッターのスプライトが受け取り、スイングする動作をさせる命令を動かすようにします。
ボールのスプライトから「うった」のメッセージが出る
↓
バッターのスプライト「うった」のメッセージを受け取る
↓
スイングするコスチュームにする(batter-c)
■もし「ばったー」=「へんかきゅう」なら
→バットに当たった音を鳴らし、ボールに「うったあと」のメッセージを送る
↓
スイングしたあとのコスチュームにする(batter-d)
画像 : https://newscast.jp/attachments/3GIwApkGylGOjGJrJ05c.jpg
バッターの動きのスクリプト
これで打った時も、空振りの時も同じ命令でバッターを動かしています。
5.打った後の打球の動き
バッターから「うったあと」のメッセ―ジが出される
↓
ボールが「うったあと」のメッセージを受け取る
↓
ボールを動かす
という流れになりますが、ボールがどこへ飛ぶのかはランダムにしようと思いますので、打球が移動するx座標の大きさを-15~15の間に設定し、変数「だきゅう」として決めて、ボールが画面の上部にいくまでボールを大きくしながら繰り返し移動させることで、打たれた打球を表現しています。
画像 : https://newscast.jp/attachments/OIK7QSiJBCZnu78REpAF.jpg
6.最後に
これで簡単な野球ゲームの完成です。
このプログラムのデータはこちらです。
ご利用にはScratch3.0が必要です。
ダウンロードしていない場合はこちらからダウンロードして下さい。
https://scratch.mit.edu/download
baseball-vol1.sb3
: https://newscast.jp/attachments/iXqI42lerGuqXhCDvrGM.sb3
まだまだ単純なプログラムなので、もっとこうしたらどうか、この方が面白くなる、などと改造しながら、試行錯誤をして思考力のトレーニングを兼ねて楽しんで欲しいと思います。
私は個人的にバッター側の球種の読みに関する思考ルーティーンや、ランナーやバッターの打球の結果などによって得点が入ったりするように改造してみたりしました。
なお、改造したデータはこちらになります。
baseball-vol2.sb3
: https://newscast.jp/attachments/FSzbFoRuF6p3TtApDJtv.sb3
プログCLUB
東京都江東区で活動するロボット制作チームです。
小中学生、および高校生とロボコンを目指してトレーニングやロボット開発を行なっています。まだ始まったばかりの団体ですが、「より早く、より賢く、より効果的に」を合言葉に、内部のロボコンでも、外部のロボコンでも、区別なくやるなら優勝を目指そうという意識を持って取り組んでいます。
また、全員がチームの一員として役割を持ち、スポンサー募集、広報活動、地域奉仕活動などにも関わることで、ロボコンを目指していく場を提供することによって、「ロボットの技術を学ぶだけではない、総合的なマネジメント能力を学ぶ機会を作りたい」というミッションを持つ教育活動の一環として活動をしていきます。
こうしたプログラミングのサンプルを制作して公開する活動も広報活動としてだけでなく、Scratchでプログラミングをやろうとしている子どものために、という奉仕活動の一環として実施しています。
プログCLUB : https://moroedu.com/progclub/
詳細はこちら
プレスリリース提供元:@Press
【関連画像】
この記事に関連するニュース
-
五十嵐亮太氏 自身が選ぶベストナインを明かす 対戦するのが一番嫌な選手も告白「選球眼がこの中で一番」
スポニチアネックス / 2024年11月9日 18時9分
-
小久保監督、柳田、近藤…打撃投手から見たホークスの超一流打者たち。「打撃練習のときだけ別人」打撃練習での意外なルーティン
集英社オンライン / 2024年11月3日 11時0分
-
【社会人野球】阪神ドラ1・伊原陵人投手&DeNAドラ1・竹田祐投手が熱投!至極の名勝負 NTT西日本が延長12回の死闘を制す...敗れた三菱重工West「あと1球の怖さを教えてもらった」
MBSニュース / 2024年11月2日 18時42分
-
【イベントレポート】光の遊園地 ~Flowering Illumination~ 先行体験イベントを実施
@Press / 2024年11月1日 17時0分
-
ダンロップ硬式テニス・ソフトテニスの干支ボールを数量限定で新発売
@Press / 2024年10月24日 10時0分
ランキング
-
1山陽新幹線がもたらした2つの奇跡…「明太子」と「戦後の貧乏球団」の知られざる物語 全線開業からまもなく50年
まいどなニュース / 2024年11月16日 21時0分
-
2巨大なダム湖から遊覧船を“吊り上げて”撤去!「日本一高所の遊覧船」55年の歴史に幕 SNSでは惜しむ声
乗りものニュース / 2024年11月16日 11時12分
-
3熊本の路線バス・鉄道5社、SuicaなどICカード決済から全国初の離脱…更新費12億円が重荷
読売新聞 / 2024年11月16日 21時20分
-
4脳外科医も実践、姿勢が整う1日10回の「足首運動」 身体能力を高めたいなら意識したい「脛の筋肉」
東洋経済オンライン / 2024年11月16日 18時0分
-
5コメダのレア業態、「団子が焼ける」喫茶店はわずか14店舗 なぜやっている?
ITmedia ビジネスオンライン / 2024年11月17日 7時15分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください