コンテンツへスキップ

小学生のための簡単 RPG「マップ」の作り方

RPG には欠かせないマップの作り方について解説します。マップの「画像」の作り方は、下記の記事で解説しています。本格的なマップを作りたい人は参考にしてみてください。

scratch-rpg-maap

今日のポイント

・よく似たプログラムがあったとき、プログラムの中に法則(ルール)が隠れていないか調べてみよう

ad-earth-shop-online

【はじめに】完成した作品を見る

プレイヤーがマップを上下左右に移動したとき、移動先のマップが表示されるように作ります。

表の世界(3 × 3 のマップ)

rpg_map1

裏の世界(2 × 2 のマップ)

rpg_map2

【考え方】作品の全体像を理解する

主なスプライト

rpg_map3

① スプライト「プレイヤー」のコスチューム

rpg_map4

②~⑤ スプライト「マップの★の端」のコスチューム

プレイヤーがマップの端まで来たことを調べられるようにするため、スクラッチの画面の上・下・左・右にスプライトを用意します。端まで来たかどうかを調べるには座標や色を使ってもいいのですが、スプライトの当たり判定を利用する方法が簡単で確実です。

rpg_map5-1
rpg_map5-2

⑥ スプライト「表の世界」のコスチューム

「表の世界」は 3 × 3 のマップです。下記のように、1 ~ 9 まで順番にマップの画像を並べます。

rpg_map6

⑦ スプライト「トンネル」のコスチューム

「表の世界」と「裏の世界」をつなぐトンネルです。

rpg_map7

スプライト間のイベント

スプライトのイベントや、イベント間のメッセージの関係を示した図です。「メッセージ」を出す側と、「メッセージ」を受け取る側をよく確認しておきましょう。

rpg_map8

【プログラミング】してみよう

完成した作品はこちらにあります。難しいところは真似してみてください。

変数を作成する

No変数名変数の種類使い方どんな値が入る?
1【定数】プレイヤーのX座標の下限変数
全てのスプライト用
マップを右に移動した際の、プレイヤーのX座標定数
(X座標)
2【定数】プレイヤーのX座標の上限変数
全てのスプライト用
マップを左に移動した際の、プレイヤーのX座標定数
(X座標)
3【定数】プレイヤーのY座標の下限変数
全てのスプライト用
マップを上に移動した際の、プレイヤーのY座標定数
(Y座標)
4【定数】プレイヤーのY座標の上限変数
全てのスプライト用
マップを下に移動した際の、プレイヤーのY座標定数
(Y座標)
5【定数】プレイヤーの歩く早さ変数
全てのスプライト用
プレイヤーが何歩ずつ進むか定数
(例:10)
61辺のマップ数変数
全てのスプライト用
変数名の通り数字
(2×2のマップの場合は「2」、3×3のマップの場合は「3」)
7今いるマップ名変数
全てのスプライト用
変数名の通り文字
(「表の世界」 or 「裏の世界」)

すべてのプログラム

① スプライト「プレイヤー」のプログラム

rpg_map20
rpg_map21
rpg_map22
rpg_map23
rpg_map24

②~⑤ スプライト「マップの★の端」のプログラム

幽霊の効果は、見た目を透明にするために利用します。当たり判定は有効です。
似たようなブロックで「隠す」がありますが、こちらは当たり判定が無効になるので今回は使いません。

rpg_map30

⑥ スプライト「表の世界」のプログラム

「表の世界」は 3 × 3 のマップです。変数「1辺のマップ数」を「3」にしましょう。

rpg_map40
rpg_map41

下記の「次のマップに移動」というブロック定義は難しいと思います。私も試行錯誤しました。詳しく知りたい人は、この記事の下の方にある「ワンポイントアドバイス」を参考にしてみてくださいね。

rpg_map42

⑦ スプライト「トンネル」のプログラム

rpg_map50

下記は、トンネルをどこに表示するか決めるプログラムです。赤枠内の数字を変えて、皆さんの好きな位置で表示してみてください。

rpg_map51
rpg_map52

ワンポイントアドバイス

ブロック定義「次のマップに移動」は最初からプログラミングできたわけではありません。当初は、2 × 2 のマップのとき、3 × 3 のマップのとき、でそれぞれプログラムを作成していました。2 つ作成してみて初めて、プログラムがとても似ていることに気づいたのです。

プログラムを比較する

下記が、2 × 2 のマップのときと、3 × 3 のマップのときのプログラムです。プログラムが似ているということは1つにまとめられるかもしれないということです。ここでは、右のマップに移動するプログラム(赤枠部分)について考えたいと思います。

rpg_map60

法則(ルール)を探す

プログラムを一つにまとめるためには、法則(ルール)を探さなくてはいけません。恐らく誰もが、右のマップに移動するとき、コスチュームの番号を「1」増やすというルールに気づくと思います。

次に、プレイヤーが右端にいる状態から右に移動すると、2 × 2 のマップではコスチュームの番号を「-1」に、3 × 3 のマップではコスチュームの番号を「-2」にするというルールがあることにも気づくでしょう。

2 × 2 のマップ

rpg_map70

3 × 3 のマップ

rpg_map71

これらのルールを整理すると、下表のようになります。

2 × 2 のマップ3 × 3 のマップ
基本的なルール右に移動するときは、コスチュームの番号を「+1」する右に移動するときは、コスチュームの番号を「+1」する
特殊なルール右端のマップ(2、4)から右に移動するときは、コスチュームの番号を「-1」する右端のマップ(3、6、9)から右に移動するときは、コスチュームの番号を「-2」する

法則(ルール)をプログラムで表現する

先ほどのルールをプログラムで表現したものが下記になります。高校3年生で習う「数列」という考え方が必要になるので、小学生や中学生でここまでプログラミングできる人は少ないかもしれません。難しい内容ですのであまり悩み過ぎないように。「このような手順で考えていくのか」ということを「なんとなぁ~く」感じてもらえればと思います。

rpg_map61

まとめ

よく似たプログラムがあったとき、プログラムの中に法則(ルール)が隠れていないか調べてみよう
 ⇒ 法則を見つけたら、それを整理してプログラミングしてみよう

広告

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA