Scratch(スクラッチ)では、プログラミングのコードを入力しなくても、ブロックを組み合わせてゲームを作ることができます。
「Scratchを使ってみたいけれど、何から作ればいいかわからない」
「プログラミング初心者でもゲームを作れる?」
という人は、まず簡単なゲームを1本完成させてみるのがおすすめです。
この記事では、Scratch初心者でも作れる**「猫がリンゴを集めるゲーム」**を実際に作りながら、ゲーム制作の基本を解説します。
ゲームを作っていく中で、
- キャラクターを動かす
- キーボード入力を受け取る
- 条件分岐を使う
- 繰り返し処理を使う
- 変数でスコアを管理する
- ランダムな場所にアイテムを出現させる
- 制限時間を設定する
といった、プログラミングの基本も体験できます。
Scratchを初めて使う人は、先に「Scratchとは?」の記事で基本的な仕組みを確認しておくと、よりスムーズに進められます。
今回作るゲーム
今回作るのは、猫を操作して画面に出てくるリンゴを集めるゲームです。
ゲームのルールはシンプルです。
- 猫をキーボードで操作する
- 画面にリンゴが表示される
- 猫がリンゴに触れると1点獲得
- リンゴは別の場所に移動する
- 30秒間でできるだけ多くのリンゴを集める
- 時間が0になったらゲーム終了
非常にシンプルなゲームですが、Scratchでゲームを作るために必要な基本要素がたくさん入っています。
1.Scratchを開く
まずScratchの公式サイトを開きます。
Scratchはブラウザ上で利用できるため、基本的には特別な開発環境を用意する必要はありません。
Scratchの画面を開いたら、「作る」から新しいプロジェクトを開始します。

アカウントを作成していなくても、Scratchのプログラムを試すことはできます。
2.猫のキャラクターを動かす
まずはプレイヤーが操作するキャラクターを作ります。
Scratchでは、キャラクターなどのオブジェクトをスプライトと呼びます。
最初から表示されているScratchキャットを、そのままプレイヤーとして使いましょう。
右に移動させる
最初に、右矢印キーを押したら猫が右に移動するようにします。
使うブロックは、
- 「右向き矢印キーが押されたとき」
- 「x座標を10ずつ変える」
です。
この2つを組み合わせます。
すると、
右矢印キーを押す
↓
猫が10歩右に移動する
というプログラムになります。
1.「イベント」をクリックして、「スペースキーが押されたとき」をドラッグしてコードエリアに置く。

2.「スペース」の部分をクリックして、選択肢の中から「右向き矢印」を選択する。

3.「動き」をクリックして、「x座標を10ずつ変える」をドラッグして、先に配置したブロックの下にくっつけて配置する。

4.キーボードの右矢印キーを押して、猫が右方向に動くか確かめる


左に移動させる
同じように左矢印キーでも動くようにしましょう。
左矢印キーが押されたときに、
座標を10動かす
ではなく、
座標を-10動かす
ようにします。
1.右のときと同じように
- 「スペースキーが押されたとき」
- 「x座標を10ずつ変える」
のブロックを配置して、
- 「スペースキー」 → 「左向き矢印」
- 「10ずつ変える」 → 「-10ずつ変える」
に変更する。

2.左矢印キーを押して、左に動くか確認する。


これで猫を左右に操作できるようになります。
自然な動きにする
このままだと動きが不自然です。
- 左に移動するときに後ろ向きで移動する
- 同じポーズのまま移動するので、歩いている感じが出ない
自然な動きになるように、
- 移動する方向を向くようにする
- ポーズを変えて、歩いている感じを出す
に変更します。
1.「動き」をクリックして、「90度に向ける」のブロックを配置する。

2.左矢印のほうだけ「90度に向ける」の「90度」の数字を「‐90度」に変更する。

3.このままだと左に移動するときは猫が逆さまになって動いてしまうので、修正する。

4.「回転方向を左右のみにする」のブロックを配置する。

5.猫が逆さまにならずに左に移動するようになる。

6.移動するたびにポーズを変えて「歩いている感じ」を出す。
「見た目」をクリックして、「次のコスチュームにする」を配置する。

7.ポーズが変わって、「歩いている感じ」が出る。


3.上下にも動かせるようにする
次は上下方向にも移動できるようにします。
Scratchでは、画面上の位置をX座標とY座標で管理しています。
簡単に考えると、
- X座標 → 左右
- Y座標 → 上下
です。
そのため、
- 上矢印キー → Y座標を増やす
- 下矢印キー → Y座標を減らす
というプログラムにします。
これで、
↑ ↓ ← →
の4方向から猫を操作できるようになります。
1.「イベント」から、「スペースキーが押されたとき」を2つ配置して、
- スペースキー → 上向き矢印
- スペースキー → 下向き矢印
に変更する。


2.「動き」から、「y座標を10ずつ変える」ブロックを先ほど配置したブロックの下に配置する。
下向き矢印の方のy座標を 10 → -10 に変更する。


3.「見た目」から「次のコスチュームにする」を配置する。

4.ちゃんと上下に動くか確認する


これで猫を上下左右に動かすことができるようになりました。
4.リンゴを追加する
次はゲームの目的となるリンゴを追加します。
Scratchでは、画面上に新しいキャラクターやアイテムを追加することができます。
スプライトの追加から、リンゴの画像を選んでみましょう。
1.画面右下にある「スプライトを選ぶ」(犬の顔のようなマーク)をクリックする。

2.「Apple」を選択する。

3.リンゴが表示される

リンゴを小さく表示する
リンゴが少し大きすぎてゲームがしづらいので、リンゴの大きさが小さくなるように調整します。
1.「イベント」から「🏴が押されたとき」をドラッグ

2.「見た目」から「大きさを100%にする」をドラッグして、「🏴が押されたとき」の下に配置する。

3.「大きさを100%にする」ブロックの数字を
- 100 → 50
に変更する。

4.🏴 を押して動作を確認する。リンゴが小さくなれば成功。


これで、
猫+リンゴ
というゲーム画面ができました。
5.リンゴをランダムな場所に配置する
リンゴをいつも同じ場所に置いてしまうと、ゲームとしては少し単調です。
そこで、ゲーム開始時にリンゴをランダムな場所へ移動させます。
Scratchには、ランダムな数値を作るための乱数があります。
例えば、
X座標をランダムにする
Y座標をランダムにする
という処理を作れば、リンゴを画面上のさまざまな場所に配置できます。
ここで重要なのが、
コンピューターに「適当な場所に置いて」と指示する
という考え方です。
プログラムでは、このようなランダム処理がゲームのさまざまな場面で利用されます。
1.「動き」から「x座標を…、y座標を…にする」のブロックをドラッグする。

2.「演算」から、「1から10までの乱数」のブロックをドラッグして、先ほど配置したブロックの
x座標 y座標 の数字の部分にはめ込む。


3.x座標 と y座標 の乱数の数字をそれぞれ変更する
- x座標 1から10 → -220から220
- y座標 1から10 → -160から100

4.🏴のボタンを押してゲーム開始時にリンゴが表示される位置が毎回変わるか確認する。


これでゲーム開始時にリンゴの表示位置がランダムで変わるようになりました。
6.スコアを作る
ゲームには得点が必要です。
そこで、Scratchの変数を使います。
変数とは、簡単に言えば、
プログラムの中で数字やデータを保存しておく場所
です。
今回は、
「スコア」
という変数を作ります。
ゲーム開始時には、
スコアを0にする
とします。
そして猫がリンゴに触れたら、
スコアを1ずつ増やす
ようにします。
これで、
リンゴを1個取る → 1点
というゲームになります。
1.「変数」から「変数を作る」をクリックする。

2.「新しい変数名」に「スコア」と入力。「OK」をクリックする。

3.「スコアを0にする」をドラッグして、「🏴が押されたとき」の下に配置する。


7.猫がリンゴに触れたか判定する
いよいよゲームらしくなってきます。
次は、
「猫がリンゴに触れたらどうする?」
という処理を作ります。
ここで使うのが条件分岐です。
考え方は、
もし猫がリンゴに触れたなら
→ 得点を増やす
→ リンゴを別の場所へ移動する
です。
Scratchでは「もし~なら」というブロックを使って、このような条件分岐を作ることができます。
さらに、この判定を一度だけではなく、ゲーム中ずっと行う必要があります。
そこで、
「ずっと」
という繰り返し処理の中に条件分岐を入れます。
つまり、
ずっと
→ 猫がリンゴに触れた?
→ 触れていたら得点を増やす
という仕組みです。
1.「制御」から「ずっと」をドラッグする。

2.「もし…なら」を先に配置した「ずっと」のなかに入れる。


3.「調べる」から「マウスのポインターに触れた」をドラッグして、「もし…なら」の中にはめ込む


4.「マウスのポインター」の部分をクリックすると選択肢が出るので、「Sprite1」を選択。

5.「変数」から「スコアを1ずつ変える」を「もしSprite1に触れたなら」の中に入れる。


6.🏴 を押して動作を確かめる。

7.猫がリンゴに触れるとスコアが急上昇してしまう。後で 1 ずつ上がるように修正する。

8.リンゴを取ったら別の場所に移動させる
ここまでだと、リンゴを取った後も同じ場所に残ってしまいます。
また、猫がリンゴに触れている間スコアが上がり続けるので、
スコアが一気に上昇してしまいます。
そこで、
猫がリンゴに触れた
↓
スコアを1増やす
↓
リンゴをランダムな場所へ移動
という処理を追加します。
これで、スコアの急上昇を抑える事ができて、リンゴを取るたびに次のリンゴが別の場所に出現するようにできます。
1.「x座標を…、y座標を…にする」のブロックの上で、右クリックする。メニューから「複製」を選択する。

2.いらないブロックは削除して、「x座標…」のブロックだけ取り出す。


3.「x座標…」のブロックを「スコアを1ずつ変える」の下に配置する。


4.🏴 をクリックしてプログラムを動かして、上手くできたか確かめる。


移動したリンゴが猫に重なって連続で得点が入る問題を修正する
猫がリンゴに触れた後、
次にリンゴが現れる場所が、
たまたま現在、猫のいる場所に重なる場合があります。
その場合
猫がリンゴに触れた
↓
スコアを1増やす
とならずに、
スコアが2、3と一度に増えてしまいます。
一度触れただけなのに、スコアが2増えた。↓


これを防止するために、
リンゴが移動
↓
猫と重なっているか?確認
↓
YES → 別の場所に選び直す
という処理を追加します。
使うブロックは、
- 「…ではない」
- 「…まで繰り返す」
です。
1.「制御」から「…まで繰り返す」ブロックを「スコアを1ずつ変える」のブロックの下に、
「x座標を…にする」のブロックが「…まで繰り返す」の中に入るように配置する。


2.「演算」から「…ではない」を、「…まで繰り返す」の中にはめ込む。


3.「Sprite1に触れた」ブロックを複製する。

4.「Sprite1に触れた」を「…ではない」の中にはめ込む。


ゲームスタート時のプログラムも修正する
実はゲームスタート時にも、
「リンゴの出現場所 と 猫の位置 が重なってスコアが勝手に入る」
の問題が起きる場合があります。
最初に出現したリンゴが、
猫の最初の位置と重なって
ゲームスタート
↓
いきなりスコアが1の状態で始まる
という状態になります。
これを防ぐプログラムも追加しましょう。
1.「Sprite1に触れた…繰り返す」の中のブロックのかたまりをコピーする。


2.コピーしたブロックのかたまりを「x座標…y座標…にする」の下に配置する。


これでスコアが、1ずつ確実に上がるようになります。
9.制限時間を設定する
ここまででもゲームとして成立しますが、いつまでも遊べてしまいます。
そこで制限時間を追加しましょう。
今回は30秒にします。
ここでも変数を使います。
新しく、
「残り時間」
という変数を作ります。
ゲーム開始時には、
残り時間を30にする
と設定します。
そして、
1秒待つ
↓
残り時間を1減らす
という処理を繰り返します。
つまり、
30 → 29 → 28 → 27 → …… → 0
と時間が減っていきます。
1.猫のスプライトをクリックして、選択する。

2.「イベント」から「🏴が押されたとき」をドラッグする。

3.「変数」から「変数を作る」をクリックする。

4.「新しい変数名」に「残り時間」と入力。「OK」をクリックする。

5.「スコアを0にする」を「🏴が押されたとき」の下に配置する。


6.「スコア」の部分をクリックして、「残り時間」を選択する。

7.「残り時間」の数字を30にする。

8.「制御」から「ずっと」をドラッグして、「残り時間…」の下に配置する。

9.「1秒待つ」を「ずっと」の中に入れる。

10.「変数」の中の「スコアを1ずつ変える」を「ずっと」の中の「1秒待つ」の下に配置する。


11「スコア」の部分をクリックして、「残り時間」に変える。

12.「残り時間」の数字を 1 から -1 に変える。

13.🏴 を押してテストする。
10.時間が0になったらゲーム終了
最後は、
「残り時間が0になったらどうする?」
という処理を追加します。
このままだとゲームが終了したのに、
- 猫を動かすことができる
- 残り時間のカウントが進み続けて ー 表示になる。
という現象が起きてしまいます。
残り時間が 0 になったらこれらの動きは止まるように設定します。
設定するには条件分岐を使います。
考え方は、
残り時間が0になった?
↓
YES → 猫の操作と残り時間のカウントを停止させる
↓
ゲーム終了
です。
加えて、
「ゲーム終了!」
と表示したり、
「あなたのスコアは○点でした」
と表示したりすると、ゲームらしくなります。
残り時間のカウントを停止させる
1.「制御」から「もし…なら」ブロックを「残り時間を-1ずつ変える」の下に配置する。


2.「演算」から「… = 50」のブロックを、「もし…なら」の「…」の部分に入れ込む。


3.「変数」から「残り時間」を「… = 50」の「…」の部分に入れ込む。


4.「残り時間」の数字を 50 → 0 に変更する。

5.「制御」から「すべて止める」を「もし残り時間 = 0なら」の中に配置する。

6.「すべて止める」をクリックして、「このスクリプトを止める」に変更する。

7.🏴 をクリックして、残り時間が 0 で止まるか確かめる


猫の動きを停止させる
1.「右向き矢印キーが押されたとき」の下にある、「x座標…」から「次のコスチューム…」までの4つのブロックをずらして、「制御」から「もし…なら、でなければ」のブロックを、「右向き矢印…」の下に配置する。


2.ずらした4つのブロックを「でなければ」の中に入れる。


3.先ほど作った「残り時間0」のブロックをコピーする。


4.「残り時間0」のブロックを、「もし…なら」の「…」の部分に入れ込む。


5.「制御」から「すべてを止める」を「もし残り時間=0なら」の中に入れて、
「すべてを止める」 → 「このスクリプトを止める」に変更する。



6.残りの3つ「左向き矢印」・「上向き矢印」・「下向き矢印」も「右向き矢印」と同じように作り変える。

7.🏴 をクリックして、テストする。
残り時間が 0 になったら、上下左右のキーからの操作を受け付けなければ成功。
ゲーム終了時の演出の追加
ゲーム終了したときに、
猫が、
「あなたのスコアは○点でした」
と言う演出を追加します。
1.「見た目」から「こんにちは!と言う」を「もし残り時間=0なら」の中の「このスクリプトを止める」の上に配置する。


2.「演算」から「りんごとバナナ」を「こんにちは!」の部分に入れ込む。


3.「りんごとバナナ」を「りんご」の中に入れ込む。


4.「りんご」→ 「あなたのスコアは」、後ろの「バナナ」→ 「点でした!」に変更する。


5.「変数」から「スコア」を「バナナ」の部分に入れ込む。


6.🏴 を押してテストする。残り時間0になったら、
「あなたのスコアは○点でした」
と言えば成功。

お疲れ様でした!これでゲームは完成です。
11.ゲームの流れを整理してみよう
今回作ったゲームの処理を整理すると、次のようになります。
ゲーム開始
↓
スコアを0にする
↓
残り時間を30秒にする
↓
リンゴをランダムな場所に配置
↓
猫をキーボードで操作
↓
猫がリンゴに触れた?
↓
YES → スコアを1増やす
↓
リンゴを別の場所へ移動
↓
残り時間を減らす
↓
残り時間が0?
↓
YES → ゲーム終了
実際にはScratchのブロックをいくつかのスクリプトに分けて作りますが、ゲーム全体の仕組みはこのようになっています。
今回のゲームで使ったプログラミングの基本
ここまでゲームを作ってみると、単純なゲームの中にもさまざまなプログラミングの考え方が使われていることがわかります。
| ゲームで使った処理 | プログラミングの考え方 |
|---|---|
| キーを押したら猫が動く | イベント |
| 猫を動かす | 命令・処理 |
| 「もし触れたら」 | 条件分岐 |
| 「ずっと確認する」 | 繰り返し |
| スコア | 変数 |
| 残り時間 | 変数 |
| リンゴをランダムな場所へ移動 | 乱数 |
| 猫とリンゴの接触判定 | 条件判定 |
| 時間が0になったら終了 | 条件分岐 |
つまり、Scratchでゲームを作ることは、単に「遊べるものを作る」だけではありません。
ゲームを作りながら、プログラミングの基本的な考え方を体験できるのです。
ここからゲームを改造してみよう
基本的なゲームが完成したら、次は自分で改造してみましょう。
Scratchの面白いところは、完成したゲームをさらに自由に変更できることです。
例えば、
リンゴを2種類にする
普通のリンゴは1点、金色のリンゴなら5点などにします。
爆弾を追加する
爆弾に触れたらスコアが減るようにします。
敵キャラクターを追加する
敵から逃げながらリンゴを集めるゲームにできます。
時間が経つほど難しくする
ゲーム開始直後は簡単ですが、時間が経つにつれて敵が速くなるようにします。
効果音を追加する
リンゴを取ったときに音を鳴らすだけでも、ゲームらしさがかなり増します。
背景を変更する
宇宙、海、森、街など、好きなステージに変更できます。
「完成したゲーム」を真似するだけで終わらせない
Scratchを学ぶときに大切なのは、完成したプログラムをそのまま真似することだけではありません。
ゲームが動くようになったら、
「ここを変えたらどうなるんだろう?」
と試してみましょう。
例えば、
- 10歩ではなく20歩動かしたら?
- 制限時間を30秒ではなく10秒にしたら?
- リンゴをもっと小さくしたら?
- スコアを2点ずつ増やしたら?
- 敵を追加したら?
- 2人で遊べるようにしたら?
などです。
こうした試行錯誤が、Scratchの大きな魅力です。
「正解のプログラムを覚える」というより、
自分で変更して、結果を見て、また変更する
という経験を積むことができます。
Scratchでゲームを作るメリット
Scratchでゲーム制作を学ぶメリットは、単にゲームが作れることだけではありません。
プログラミングを楽しく学べる
ゲームには「目的」があります。
「猫を動かしたい」
「敵を倒したい」
「スコアを増やしたい」
という目的があるため、必要なプログラムを自分で考えやすくなります。
すぐに結果を確認できる
プログラムを変更したら、すぐにゲームを動かして確認できます。
うまく動かなければ、
「どこが間違っているんだろう?」
と考えることになります。
この繰り返しがプログラミングの学習につながります。
自分だけの作品を作れる
Scratchでは、既存の作品を参考にしながら、自分なりに改造することもできます。
最初は誰かの作品を参考にしていても、そこから、
「自分ならこうしたい」
というアイデアを追加していけば、オリジナル作品になっていきます。
Scratchでゲームを作るなら「まず1本完成させる」のがおすすめ
プログラミング初心者の場合、最初から大規模なゲームを作ろうとすると、途中で難しくなってしまいます。
そのため、最初は今回のような簡単なゲームで十分です。
猫を動かす
↓
リンゴを取る
↓
スコアを増やす
↓
制限時間を追加する
↓
ゲームオーバーにする
この程度でも、立派なゲームになります。
そして完成したら、
「もっと面白くするにはどうすればいい?」
と考えて改造していきましょう。
Scratchの次は何を学べばいい?
Scratchでゲーム制作に慣れてくると、
「もっと本格的なゲームを作ってみたい」
「Scratchではできないことにも挑戦したい」
と思うかもしれません。
その場合は、目的に応じて次のステップへ進めます。
ゲーム制作をもっとやりたいなら「Roblox」
ゲーム制作に興味があるなら、ScratchからRobloxへ進むという方法があります。
Robloxでは、ゲームを遊ぶだけではなく、自分でゲームを制作して公開することもできます。
Scratchよりも本格的なゲーム制作環境を体験したい人には、面白いステップアップ先です。
本格的なプログラミングなら「Python」
ゲーム制作よりも、
- AI
- 自動化
- データ分析
- プログラミングそのもの
などに興味があるなら、Pythonへ進む方法があります。
Scratchで学んだ、
- 条件分岐
- 繰り返し
- 変数
- イベント
- データの扱い
などの考え方は、別のプログラミング言語を学ぶときにも役立ちます。
ただし、ScratchとPythonではプログラムの書き方が大きく異なるため、Scratchを経験すればPythonが簡単に習得できるという意味ではありません。
あくまでも、
プログラミングの考え方を体験してから、テキストベースの言語へ進む
という学習ルートの一つです。
まとめ
Scratchでは、プログラミングコードを一から覚えなくても、ブロックを組み合わせることでゲームを作ることができます。
今回作ったのはシンプルな「猫がリンゴを集めるゲーム」でしたが、その中には、
- キャラクターの操作
- キーボード入力
- 条件分岐
- 繰り返し
- 変数
- 乱数
- 接触判定
- タイマー
- ゲームオーバー
など、ゲーム制作に必要なさまざまな要素が含まれています。
そして、Scratchで大切なのは、完成したプログラムをただ真似することではありません。
作る → 動かす → 失敗する → 原因を考える → 修正する
という試行錯誤を繰り返すことです。
まずは簡単なゲームを1本完成させてみましょう。
そこから敵を追加したり、アイテムを増やしたり、ステージを作ったりして、自分だけのゲームに改造していくのもScratchの楽しみ方です。
そしてゲーム制作をもっと本格的にやりたくなったらScratchからRobloxへ、プログラミングそのものを深く学びたくなったらScratchからPythonへというように、次のステップへ進むこともできます。
Scratchは、ゲームを作りながらプログラミングの世界に入っていくための、面白い第一歩になるでしょう。

