Scratchでゲームプログラムを作ってみよう!まずは設計から

学習向けプログラミング言語のScratchで簡単なゲームを作ってみよう!

ゲームの概要(簡単にまとめもの)

キャラクター(猫)がマウス操作で風船を割るゲーム。

ゲームの詳細(詳しく説明)

キャラクター(猫)がマウス操作でステージ内を自由に移動できる。

ステージの下から風船がランダムに上に向かって移動する。

その風船にキャラクター(猫)が触れると風船が割れる

こんな感じの簡単なゲームプログラムを作ってみましょう

プログラミング 設計をまとめてみよう

プログラミングは、いきなりはじめてもちゃんとできません。

なぜなら、

途中で「あれ?こんな時ってどうするんだっけ?」とか、

「やっぱり、こうした方がいいな」とか、何度も後戻りすることになります。

そんなことにならないように設計書をまとめるんです。

例えるなら、プロモデルを作るときに作り方の順番が書かれている説明書がありますよね。

あの説明書を作るイメージですね。

上の記事はScratch(スクラッチ)を初めて使う方向けに書いた記事となっています。

設計書が大事な理由を説明

ゲームの開発(プログラミング)を行う時は、設計書を作成しておくことが重要です。

なぜかというと、設計書によって、どのようにゲームが動作するか、ゲームの全体像がどのようになっているのかを明確にすることができます。

以下に、Scratchでのゲーム開発における基本的な設計書の構成例を示します。

ゲームの設計書の例 風船割ゲームの設計書

1. 概要

ゲーム名: 風船割りゲーム

ゲームジャンル: アクション

ゲーム目標: マウス操作でキャラクターを動かし、ステージに現れる風船を全て割る

対象年齢: 6歳以上

2. ゲーム画面

  • 背景: 青い空
  • キャラクター:
    • プレイヤーキャラクター: 猫 (または好きなキャラクター)
    • 風船: 赤、青、黄色の風船 (ランダムに色とサイズが変わる)
  • その他:
    • スコア表示: 割った風船の数を表示
    • タイマー: 制限時間 (オプション)

3. ゲームルール

  1. プレイヤーはマウス操作でキャラクターを移動させ、風船に接触させる。
  2. キャラクターが風船に接触すると風船が割れ、スコアが加算される。
  3. 全ての風船を割るとゲームクリア。
  4. 時間制限ありの場合、時間内に全ての風船を割れなければゲームオーバー。

4. ゲームフロー

  1. ゲーム開始:
    • タイトル画面が表示される (オプション)。
    • ゲーム開始ボタンを押すとゲームスタート。
    • スコアとタイマー (オプション) が初期化される。
    • 風船がランダムな位置から出現し、ランダムな方向に移動する。
  2. ゲームプレイ:
    • プレイヤーはマウス操作でキャラクターを移動させる。
    • キャラクターが風船に接触すると、風船が割れ、スコアが加算される。
    • 新しい風船がランダムな位置から出現し、ランダムな方向に移動する。
    • タイマー (オプション) がカウントダウンする。
  3. ゲーム終了:
    • 全ての風船を割るとゲームクリア。
    • タイマー (オプション) が0になるとゲームオーバー。
    • 結果画面が表示される (スコア、クリア時間、ゲームオーバーメッセージ)。
    • リトライボタンが表示される。

5. スクリプト

キャラクター: プレイヤーキャラクター (猫)

  • イベント:
    • 緑色の旗がクリックされたとき:
      • キャラクターをステージ中央に移動。
    • マウスがクリックされたとき:
      • キャラクターをマウスの位置に移動。
  • 制御:
    • 移動: キャラクターをマウスの位置に移動。

キャラクター: 風船

  • イベント:
    • 緑色の旗がクリックされたとき:
      • 風船をランダムな位置に移動。
    • 風船がステージの端まで到達したとき:
      • 風船をランダムな位置に移動し、移動方向を反転。
    • 風船がキャラクターと触れたとき:
      • 風船を消す。
      • スコアを加算。
  • 見た目:
    • 風船のサイズをランダムに設定。
    • 風船の色をランダムに設定。
    • 風船を回転させる (オプション)。
  • 制御:
    • 移動: 風船をランダムな方向に移動。
    • 動きを止める: 風船が消えたときに動きを止める。

ステージ:

  • イベント:
    • 緑色の旗がクリックされたとき:
      • スコア変数を0に初期化。
      • タイマー (オプション) を初期化。
      • 新しい風船を複数作成。
  • 見た目:
    • スコアを表示する。
    • タイマー (オプション) を表示する。
  • 制御:
    • ゲームオーバー判定: 全ての風船が割れたとき、またはタイマーが0になったときにゲームオーバー。

6. 拡張機能 (オプション)

  • レベル: 難易度を調整するためのレベル機能を追加 (風船の数、風船の速度、時間制限などを変更)。
  • サウンド: 効果音 (風船が割れる音、ゲームクリア音、ゲームオーバー音) を追加。
  • アイテム: ステージにアイテム (パワーアップ、障害物) を追加。
  • ランキング: スコアをランキング形式で表示。

7. 注意事項

  • スクリプトは上記を参考に、ゲームの仕様に合わせて調整してください。
  • 適切な変数やリストを活用して、コードを整理してください。
  • わかりやすいコメントを記述して、コードの可読性を高めてください。
  • ゲームプレイテストを繰り返し行い、バグ修正や改善を行いましょう。

8. 作成イメージ

  • 始めに、青い空の背景と猫のキャラクター、風船のキャラクターを作成します。
  • 猫のキャラクターにはマウス操作で移動するスクリプトを組み込みます。
  • 風船のキャラクターにはランダムな位置から出現し、ランダムな方向に移動するスクリプトを組み込みます。
  • 猫が風船に触れると、風船は消え、スコアが加算されるようにスクリプトを組み込みます。
  • 全ての風船が消えるとゲームクリア、またはタイマーが0になるとゲームオーバーとなるようにスクリプトを組み込みます。

Scratchで風船割ゲームを作ろう!

Scratchで「キャラクターが風船を割るゲーム」を作る方法を、使うブロックとその使い方を具体的に説明します。

Scratchには、プログラムを作るための「ブロック」があり、それを組み合わせていくのがポイントです。

1. 初期設定

  • 背景とキャラクターの選択: 青空の背景を設定し、猫のキャラクターと風船をスプライトライブラリーから選びます。

2. キャラクターの動き設定

  • キャラクターの動き: イベントカテゴリから「緑の旗が押されたとき」ブロックを使用し、制御カテゴリの「ずっと」ブロックでマウスポインタへ移動する動きを作ります。これは動きカテゴリの「マウスのポインターへ行く」ブロックを利用します。

3. 風船の動き設定

  • 出現と移動: 風船が画面下からランダムに出現するよう、「緑の旗が押されたとき」の後に「x座標を(ランダムな範囲)にする」および「y座標を -150にする」ブロックを配置。風船は「y座標を10ずつ変える」を使い、上方に動かします。

4. 風船を割る仕組み

  • 接触判定とアクション: 風船がキャラクターに触れたら消えるように設定します。
    • 制御カテゴリの「もし~なら」ブロック内で調べるカテゴリの「<スプライト1に触れた>」を使用。
    • カテゴリで「ポップする音を鳴らす」、その後スプライトを隠すを設定します。

5. 点数の管理

  • 点数を加算: 変数「スコア」を作成し、「緑の旗が押されたとき」にスコアを0にする。「キャラクターが風船に触れたとき」にスコアを1増やすように変数を設定します。

この一連の手順により、猫キャラクターがマウスを追いかけて、風船に触れると風船が消えてスコアが加算されるゲームが完成します。

遊びながら調整しながら、自分だけのオリジナルゲームを作ってみましょう!

でも、これだけだと思ったようにならないんです。

このままだと風船が1回割れたらゲームが終わってしまうんです。

そこで、風船が割れたら次の風船が出てくる設定をしないといけません。

次は、風船がもう一度現れるようにします。

風船が再出現するように設定する

  • 風船が割れるときのスクリプト
    • 風船スプライトを選択して、スクリプトエリアに移動します。
    • イベントカテゴリから「緑の旗が押されたとき」ブロックを置きます。
    • 制御カテゴリの「ずっと」ブロックをその下に置きます。
    • 「ずっと」ブロック内に「もし○○なら」ブロックを入れます。
  • 接触判定の設定
    • 「もし○○なら」ブロックで、キャラクターと触れた時を判定します。
    • 調べるカテゴリから「<マウスポインターに触れた>」を「もし○○なら」に入れます。これを「<キャラクタースプライト名に触れた>」に変更します。
    • この中に以下のアクションを追加します:
  • 割れて再出現するアクション
    • カテゴリで「ポップする音を鳴らす」ブロックを追加します。
    • 外見カテゴリから「隠す」ブロックを追加します(これで風船が消えます)。
    • その後に、「待つ 0.5 秒」などの短い待ち時間を追加します。
    • 「隠す」と「表示する」の間に、もう一度初期位置に戻すスクリプトを追加します。
      • 動きカテゴリで「x座標を[ランダム数]にする」「y座標を-150にする」を再度設定します。
      • 外見カテゴリで「表示する」ブロックを追加します(これで再び風船が現れます)。