【スクラッチ】てんびんゲームの作り方

2022年4月25日月曜日

Scratch スクラッチ プログラミング

t f B! P L

 

てんびんゲームの作り方






天秤をつかって重さを当てるゲームです。
スプライトのドラッグ&ドロップや角度を使う学習ができます。

重りを色々なデザインに変えて遊んでみるのも楽しいかもしれません。



スクラッチプロジェクト:


YouTube動画:
【スクラッチプログラミング】90分で学べる「天秤ゲーム」の作り方


詳しいコードの組み方はYouTube動画を参照してください。
(各ステップに途中再生のリンクがあります)





Step.1 てんびんの棒が重さに合わせて傾くようにする





作成する「全てのスプライト」用の変数

※「背景」では「全てのスプライト」用の変数しか作れません

左皿の重さ
右皿の重さ
限界角度幅 (初期値:20)
目的の角度
現在の角度 (初期値:90)


作成するメッセージ


ゲームを開始する
天秤を動かす


「背景」に作成するブロック


天秤の角度を算出する(引数1:左皿の重さ、引数2:右皿の重さ)



「天秤の棒」の角度を決めるロジック(背景のコード)


左右の皿にのっている重さに合わせて天秤の角度を求めるロジックです。




※その他のコードは動画を参照してください



作成するスプライト


天秤の棒







Step.2 土台を作る






作成するスプライト


土台




土台のコードは↓これだけです。







Step.3 左右の天秤を作る








作成するスプライト


左皿



右皿






「背景」に作成するブロック


左右の皿を移動(引数:天秤の角度)




作成する「全てのスプライト」用の変数


左皿のX座標
左皿のY座標
右皿のX座標
右皿のY座標



天秤の棒の角度から天秤の皿の位置を算出するロジック(背景)


左皿と右皿のそれぞれのX座標、Y座標を求めます。





左皿のコード





右皿のコード








Step.4 天秤がゆっくり傾くようにする







「天秤の角度を算出する」ブロックにコードを追加する(背景)







Step.5 左右の皿の重りにリストを使う







作成するリスト


左皿のリスト
右皿のリスト




「背景」に作成するブロック


重さを算出する




作成する「全てのスプライト」用の変数


リストカウント



左皿と右皿の重さを算出するロジック(背景)


各リスト内の数値を足すだけです。







Step.6 左皿の重りを作る







作成するスプライト


左皿の重り




「背景」に作成するブロック


左皿にのせる




「左皿の重り」のコード






「左皿にのせる」ブロックのコード(背景)


最初は仮の値(100)を入れておきます。
(あとでランダムの数が入るように改良します)







Step.7 右皿のドロップエリアを作る







作成するスプライト


右皿エリア




作成する「全てのスプライト」用の変数


ドラッグ中(初期値:OFF)



「右皿エリア」のコード










Step.8 重りを右皿にドラッグしてのせる








作成するスプライト


50(スプライト名=重さの数値)



作成する「50」用の変数


重さ
元の場所のX座標
元の場所のY座標
状態



「50」で作成するコード













Step.9 右皿に重りをかさねてのせる







作成する「50」用の変数


高さ
積む位置



「50」に作成するブロック


皿の上に置く



「50」で追加・修正するコード





※ 他の細かいところは動画を参照してください



複製して作成するスプライト


「50」を複製して「20」を作る



複製した「20」で修正するコード









Step.10 全ての重りを作る







重りを複製して作成するスプライト


5
10
30
40



複製した重りのスプライトで修正するコード


※「20」の時と同じ



「旗が押されたとき」ブロックの
重さ高さ元の場所のY座標を各重りに合わせて変更します。







Step.11 ゲームのスタートとクリアを作る








作成するスプライト


メッセージ




作成する「すべてのスプライト」用の変数


ゲームクリア



「メッセージ」に作成するコード






「背景」に作成するブロック


クリア判定




「背景」に追加するコード



※細かいところは動画を参照してください






Step.12 左皿の重りをランダムにする










「背景」の「左皿にのせる」ブロックを編集する










Step.13 時間制限とゲームオーバーを作る







作成するスプライト


数字




作成する「数字」用の変数


カウントダウン値




作成する「すべてのスプライト」用の変数


制限時間(初期値=20)




作成する「数字」のコード






「背景」の「クリア判定」ブロックに時間切れのコードを追加する






「メッセージ」のコードにゲームオーバーの処理を追加する




※細かいコードは動画を参照してください






Step.14 BGMとジングルをつける








「背景」にBGMループ用のコードを作る







「背景」の「クリア判定」ブロックにゲーム終了時のジングルを鳴らすコードを追加する









Step.15 変数の表示を消す







変数表示のチェックを全て外す



※ 残っているものがあれば全部チェックをはずします







Step.16 バグがあったので修正する






重りをドラッグ中に右皿にのっている一番上の重りとカーソルが重なった時に、一番上の重りが動いてしまい、ドラッグを解除するまで右皿の重りから除外されてしまう不具合です。


重りをドラッグ中は右皿の一番上のマウス判定を行わないように対処します。
(一番上以外の重りは既にドラッグ中のマウスを受け付けないようになっています)



全ての重りの「皿の上」状態のコードを修正する




※ 全ての重りのコードに対して該当箇所を修正します。





完成です!


よければ遊んでみてください。^^


他の作品記事もよければ読んでみてください。


このブログを検索

ブログをよくする

自己紹介

自分の写真
はじめまして。はるはるです。 中2の息子と小5の娘を抱える2児の父です。今はゲーム会社で働いています。 子供のプログラミング学習に協力できるように教え方を勉強中です。 このブログでは簡単なゲームを作りながら自分が学んだことを少しずつ共有していきます。 情報処理の試験をたまに受けます。 第二種情報処理技術者 ソフトウェア開発技術者 基本情報処理技術者 応用情報処理技術者 twitter: https://twitter.com/amaruchan007

連絡フォーム

名前

メール *

メッセージ *

QooQ