最終更新日:2024年8月21日
今日のポイント
・共通の特徴をもつスプライトはひとつにまとめることができる
目次
![ad-earth-shop-online](https://earth-shop.net/wp-content/uploads/20_articles/1_common/ad-earth-shop-online.png)
【はじめに】完成した作品を見る
【考え方】作品の全体像を理解する
主なスプライト
このゲームで重要なスプライトについて説明します。スプライトの数は少し多めです。
① ステージ「背景」のコスチューム
ステージのコスチュームは以下の2種類です。「ゲーム画面」には、道路やマップ(画面左側のスタートからゴール)を描きます。
② スプライト「テキスト」のコスチューム
「スタート画面」や「ゲームオーバー画面」など、画面に表示するテキストのコスチュームです。コスチュームの数は多いですが、複雑なコードはありません。
③ スプライト「マップ」のコスチューム
マップ上のどこを走っているかを示すスプライトです。ゴールの旗を目指して、スタート地点から上に移動していきます。
④ スプライト「プレイヤー」のコスチューム
プレイヤーのコスチュームは2種類です。他の車に当たったり道路からはみ出ると「爆発」します。
⑤ スプライト「コース1」のコスチューム
コースは1~3までスプライトを用意します。このスプライトを上から下に移動させることで、車が前に進んでいるように見せます。この記事では、コース1のスプライトを例に説明します。コース2、3も同じように作成します。
⑥ スプライト「横移動しない車」のコスチューム
プレイヤーが、「レース中」のコスチュームに当たると爆発します。「回復」のコスチュームの場合は、燃料が増えます。これらは別のスプライトに分けることもできますが、「横移動しない車」という共通の特徴を持っているので今回は同じスプライトで整理してみました。
スプライト間のイベント
スプライトのイベントの関係を示した図です。「メッセージ」を出す側と、「メッセージ」を受け取る側をよく確認しておきましょう。
メッセージが多く使われているので、全体を理解するのは難しいです。大事なメッセージは「ゲーム画面を表示する」と「レーススタート」です。まずは、この2つのメッセージについて確認してみてください。
【プログラミング】してみよう
変数を作成する
今回使用する変数は8個です。
No | 変数名 | 変数の種類 | 使い方 | どんな値が入る? |
---|---|---|---|---|
1 | スピード | 変数 全てのスプライト用 | プレイヤーの運転する車のスピード | 0 ~ 400 までの数字 |
2 | 燃料 | 変数 全てのスプライト用 | 変数名の通り 0になるとゲームオーバー | 0 ~ 100 までの数字 |
3 | コースの移動量 | 変数 全てのスプライト用 | プレイヤーの車のスピードに応じてコースが移動する量 | 数字 |
4 | スペースキーを押した時間 | 変数 全てのスプライト用 | 変数名の通り 押し続けるとスピードが上がっていく | 数字 |
5 | 横移動する車の向き | 変数 全てのスプライト用 | -1 の場合は左方向に横移動(※) 1 の場合は右方向に横移動(※) ※コースに触れると向きを変える | -1 か 1 の数字 |
6 | 回復の車が出現する位置 | 変数 全てのスプライト用 | 変数名の通り | 数字 (y座標) |
7 | 横移動しない車が出現する位置 | リスト 全てのスプライト用 | 変数名の通り | 数字 (y座標) |
8 | 横移動する車が出現する位置 | リスト 全てのスプライト用 | 変数名の通り | 数字 (y座標) |
すべてのプログラム
① ステージ「背景」のプログラム
② スプライト「テキスト」のプログラム
③ スプライト「マップ」のプログラム
④ スプライト「プレイヤー」のプログラム
⑤ スプライト「コース1」のプログラム
⑥ スプライト「横移動しない車」のプログラム
スプライト「横移動する車」のプログラム
【リミックス】してみよう
ワンポイントアドバイス
今回の作品では、黄色の車(障害物)と白色の車(回復)をひとつのスプライトにまとめました。この2種類の車は、「画面の上に現れた後、下の方に落ちてくる」という共通の特徴をもっています。スクラッチでは、共通の特徴をもつものをひとつのスプライトにまとめることができます。(これはスクラッチがオブジェクト指向という言語だからです)
ひとつのスプライトにまとめることができますが、違うところもあります。それはプレイヤーがこれらのスプライトに当たった時の処理です。黄色の車は障害物なので、プレイヤーは当たると爆発してしまいます。逆に、白色の車は回復なので当たると燃料が回復します。このような処理の違いは、それぞれプログラミングする必要があります。
「横移動する車」もひとつのスプライトにまとめてもよかったのですが、処理の場合分けが複雑になるので今回はしませんでした。スプライトをどこまでまとめるか、ということに正解はありません。色々と試してみて、自分なりの正解を探してみましょう。
「スイカゲーム(上級編)」は、オブジェクト指向を取り入れた作品です。もっとオブジェクト指向について学びたい方はこちらもぜひトライしてみてください。
まとめ
共通の特徴をもつスプライトはひとつにまとめることができます
ただし、ひとつにまとめることでプログラムが複雑になることもあります
色々と試してみましょう
その他の人気ゲームの作り方
最終更新日:2024年8月21日