スクラッチプログラミング - パックマンみたいなゲームのつくりかた - Part 1
パックマンがたべるドットをきれいにならべるプログラムを紹介(しょうかい)します。迷路(めいろ)の背景(はいけい)をつくって、通路(つうろ)に等間隔(とうかんかく)でドットを表示(ひょうじ)しましょう。
更新日:2023年12月27日
サンプルさくひんであそんでみよう
今回(こんかい)は、パックマン風(ふう)のゲームを紹介(しょうかい)します。上下左右(じょうげさゆう)の矢印(やじるし)キーで、パックマンを操作(そうさ)してください。
(みどりのはたをおして、スタートです。プロジェクトは、ScratchのPyxofyページでもごらんになれます。)
Part 1でやること
Part 1では、迷路(めいろ)の背景(はいけい)に、ドットを表示(ひょうじ)するプログラムをつくっていきますよ。
主役(しゅやく)のパックマンは、次回(じかい)の Part 2 でつくっていきます。 Part 3 では、敵(てき)のゴーストを追加(ついか)して、ゲームを完成(かんせい)させます。
めいろにドットをならべる
ドットを等間隔(とうかんかく)にならべるプログラムと、迷路(めいろ)の背景(はいけい)をつくっていきましょう。ここでは、みやすいようにオレンジいろのおおきなドットで説明(せつめい)していきますね。
![迷路の通路にドットを表示する 迷路の通路にドットを表示する](https://www.pyxofy.com/content/images/2022/09/18-01-scratch-programming-pac-man.png)
ドットをならべるいちをしろう
最初(さいしょ)にドットをつくっていきます。ドットのスプライトを用意(ようい)してください。
![ドットのスプライト ドットのスプライト](https://www.pyxofy.com/content/images/2022/09/18-02-scratch-programming-pac-man.png)
ドットをきれいにならべるためにつかうのが、背景(はいけい)の「Xy - grid - 30px」です。
- 背景(はいけい)をえらぶ
![背景を選ぶ一覧から「Xy - grid - 30px」を選ぶ 背景を選ぶ一覧から「Xy - grid - 30px」を選ぶ](https://www.pyxofy.com/content/images/2022/09/18-03-scratch-programming-pac-man.png)
背景(はいけい)の線(せん)にそって、ドットをならべていきますよ。まずは、左下(ひだりした)にドットをおいてみましょう。座標(ざひょう)は「xざひょう:-210、yざひょう:-150」です。
- 最初(さいしょ)の位置(いち)
![x座標−210、y座標-150にドットが表示されている x座標−210、y座標-150にドットが表示されている](https://www.pyxofy.com/content/images/2022/09/18-04-scratch-programming-pac-man.png)
「Xy - grid - 30px」の背景(はいけい)をつかっているので、1マスうごかしたいときは、座標(ざひょう)を「30」かえます。ひとつ上(うえ)のマスは「xざひょう:-210、yざひょう:-120」です。
![y座標を30変えると一つ上のマスに表示される y座標を30変えると一つ上のマスに表示される](https://www.pyxofy.com/content/images/2022/09/18-05-scratch-programming-pac-man.png)
つまり、座標(ざひょう)を「30」ずつかえていけば、等間隔(とうかんかく)にドットをならべることができますね。ではつぎに、ドットをならべるプログラムをつくっていきましょう!
ドットのクローンをつくろう
迷路(めいろ)に表示(ひょうじ)するのは、ドットの クローン です。クローンではない元(もと)のスプライトはかくしておきます。
![緑の旗が押されたときに隠して、クローンされたときに表示する 緑の旗が押されたときに隠して、クローンされたときに表示する](https://www.pyxofy.com/content/images/2022/09/18-06-scratch-programming-pac-man.png)
左下(ひだりした)のマスから、ドットをたてに1列(れつ)ならべましょう。y座標(ざひょう)を「30」ずつふやしながら、クローンを「11こ」つくります。
- たてに1列(れつ)クローンをつくる
![自分自身のクローンを作ってからy座標を30ずつ変えることを、11回繰り返す 自分自身のクローンを作ってからy座標を30ずつ変えることを、11回繰り返す](https://www.pyxofy.com/content/images/2022/09/18-07-scratch-programming-pac-man.png)
たてに1列(れつ)ならべおわったら、x座標(ざひょう)を右(みぎ)へずらして、y座標(ざひょう)をいちばん下(した)のマスにもどします。
![座標(ざひょう)をつぎの列(れつ)に変える 座標(ざひょう)をつぎの列(れつ)に変える](https://www.pyxofy.com/content/images/2022/09/18-08-scratch-programming-pac-man.png)
- x座標(ざひょう)とy座標(ざひょう)をかえる
![11回繰り返した後、座標を変える 11回繰り返した後、座標を変える](https://www.pyxofy.com/content/images/2022/09/18-09-scratch-programming-pac-man.png)
「たてに11こクローンをつくったら、座標(ざひょう)をつぎの列(れつ)へかえる」。これを「15かい」くりかえすと、ステージ全体(ぜんたい)にドットをならべることができます。
- ステージ全体(ぜんたい)にクローンをつくる
![クローンを11個作ることを15回繰り返す クローンを11個作ることを15回繰り返す](https://www.pyxofy.com/content/images/2022/09/18-10-scratch-programming-pac-man.png)
緑(みどり)の旗(はた)をおすと、座標(ざひょう)をかえながら順番(じゅんばん)にドットのクローンがつくられるようになりました!
![ステージ全体にドットが表示されている ステージ全体にドットが表示されている](https://www.pyxofy.com/content/images/2022/09/18-11-scratch-programming-pac-man.png)
でもこれだと、全部(ぜんぶ)のクローンが表示(ひょうじ)されおわるまで、またなくてはいけませんね。つくられた順番(じゅんばん)にひとつずつクローンを表示(ひょうじ)するのではなく、一気(いっき)にステージ全体(ぜんたい)に表示(ひょうじ)するようにしましょう。
ドットをいっきにひょうじしよう
緑(みどり)の旗(はた)をおしたときに、クローンがすべて表示(ひょうじ)された状態(じょうたい)からはじめられるようにします。そのためにつかうのが、 「ブロック定義(ていぎ)」です。
「ドットをならべる」という名前(なまえ)のブロックを、「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくってください。
- ブロックをつくる
![ブロック名を入力して「画面を再描画せずに実行する」をチェックする ブロック名を入力して「画面を再描画せずに実行する」をチェックする](https://www.pyxofy.com/content/images/2022/09/18-12-scratch-programming-pac-man.png)
画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する理由(りゆう)は、クローンがひとつずつ順番(じゅんばん)につくられている様子(ようす)をみせないようにするためです。
クローンをつくるためのブロックを、ブロック定義(ていぎ)でまとめましょう。
- 「ドットをならべる」を定義(ていぎ)する
![定義「ドットをならべる」の下にクローンを作るためのブロックをつなげる 定義「ドットをならべる」の下にクローンを作るためのブロックをつなげる](https://www.pyxofy.com/content/images/2022/09/18-13-scratch-programming-pac-man.png)
緑(みどり)の旗(はた)をおしたときに、ドットのクローンがすべて表示(ひょうじ)されるようになりました!
はいけいをつくろう
背景(はいけい)につかう迷路(めいろ)をつくりましょう。「Xy - grid - 30px」の線(せん)にそって、青色(あおいろ)で壁(かべ)をえがきます。
直線(ちょくせん)のえがきかた
- 「shiftキー」をおしながらドラッグすると、たてにまっすぐ、よこにまっすぐにえがけます。
- 直線(ちょくせん)のながさを微調整(びちょうせい)したいときは、「かたちをかえる」矢印(やじるし)で、えがいた直線(ちょくせん)のはじを選択(せんたく)します。キーボードの矢印(やじるし)キーをおすと、すこしずつながくしたり、みじかくしたりできます。
![青色で描いた直線の壁 青色で描いた直線の壁](https://www.pyxofy.com/content/images/2022/09/18-14-scratch-programming-pac-man.png)
四角(しかく)のえがきかた
- ぬりつぶし「黒(くろ)」、枠線(わくせん)「青(あお)」で、ステージの外枠(そとわく)をつくります。
- 再背面(さいはいめん)へ移動(いどう)して、直線(ちょくせん)の壁(かべ)がみえるようにします。
![ステージ全体が黒色で、壁は青色 ステージ全体が黒色で、壁は青色](https://www.pyxofy.com/content/images/2022/09/18-15-scratch-programming-pac-man.png)
めいろにドットをひょうじしよう
背景(はいけい)ができたら、緑(みどり)の旗(はた)をおしてドットを表示(ひょうじ)してみましょう。
![迷路の背景とステージ全体に表示されたドット 迷路の背景とステージ全体に表示されたドット](https://www.pyxofy.com/content/images/2022/09/18-16-scratch-programming-pac-man.png)
迷路(めいろ)の壁(かべ)にも、ドットが表示(ひょうじ)されてしまいましたね。
これをふせぐために、クローンされたときに壁(かべ)にふれているかどうかを確認(かくにん)しますよ。つかうブロックは、「もし<>なら、でなければ」です。
- 「ひょうじする」をはずして、「もし<>なら、でなければ」をつなげる
![「クローンされたとき」ブロックの下に条件分岐をつなげる 「クローンされたとき」ブロックの下に条件分岐をつなげる](https://www.pyxofy.com/content/images/2022/09/18-17-scratch-programming-pac-man.png)
青色(あおいろ)にふれている場合(ばあい)は、そのクローンは削除(さくじょ)して、青色(あおいろ)にふれていないクローンだけを表示(ひょうじ)するようにします。
- 削除(さくじょ)するクローンと、表示(ひょうじ)するクローンを確認(かくにん)する
![壁に触れていないクローンだけが表示されるようにする 壁に触れていないクローンだけが表示されるようにする](https://www.pyxofy.com/content/images/2022/09/18-18-scratch-programming-pac-man.png)
迷路(めいろ)の通路(つうろ)にだけ、ドットが表示(ひょうじ)されるようになりました!
![通路にドットが等間隔で表示される 通路にドットが等間隔で表示される](https://www.pyxofy.com/content/images/2022/09/18-19-scratch-programming-pac-man.png)
ドットのかずをかぞえよう
最後(さいご)に、表示(ひょうじ)されたドットの数(かず)をかぞえる 変数(へんすう) を追加(ついか)しておきましょう。パックマンがいくつドットをたべたのか、かぞえられるようにするためです。
- 変数(へんすう)「ドットのかず」を、最初(さいしょ)は「0」にしておく
- クローンを表示(ひょうじ)するときに、変数(へんすう)を「1」ずつふやす
![ドットの数を数える変数を追加する ドットの数を数える変数を追加する](https://www.pyxofy.com/content/images/2022/09/18-20-scratch-programming-pac-man.png)
プログラムかんせい
ドットのプログラムが完成(かんせい)です!
![ドットの完成プログラム ドットの完成プログラム](https://www.pyxofy.com/content/images/2022/09/18-21-scratch-programming-pac-man.png)
![](https://www.pyxofy.com/content/images/2024/07/cover-page-320-4.png)
Pyxofy (著)「きょうからはじめるスクラッチプログラミング入門」
Pyxofy が Scratch の電子書籍を出版しました!Kindle・Apple Books からご購入ください。
まとめ
今回(こんかい)は、迷路(めいろ)の背景(はいけい)に、ドットをきれいに表示(ひょうじ)する方法(ほうほう)を紹介(しょうかい)しました。
迷路(めいろ)のかたちがかわっても、壁(かべ)のいろがおなじであれば、ドットは通路(つうろ)にだけ表示(ひょうじ)されます。いろいろなかたちの迷路(めいろ)のステージを追加(ついか)してみるのもたのしいですね。
次回(じかい) は、パックマンをつくっていきますよ。おたのしみに!
最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!