
今回は、ゲームでよくつかわれる
「マップチップ」をもとに マップチップをプログラムで
関連記事
RPGのマップを作ろう
スクラッチでRPGのマップを歩き回ろう!
ScratchプログラムでRPGのマップを生成したい
まずはマップチップを準備する
マップチップというのは、マップを
こういうお
これを
今回は、草原・海・森・山・お

今回このサンプルを使って
こういう
素材サイト:ぴぽや
素材サイト:ねくらマップチップ
その他リンク集
たくさんのマップチップが一つの
分割ソフトはPL_ImageConstructorとかがおススメです。
以前「RPGのキャラをプロジェクトに追加しよう」という記事で
というwebサービスをつかって画像を分割する方法を紹介しています。
今回は、
ぴぽやのマップチップをもとに、ベクター
https://scratch.mit.edu/projects/108698843/
マップデータを作る
マップデータは、何でもいいのですが今回は「CSVデータ」というものを使ってみましょう。CSVとは「コンマセパレートバリュー」の
たとえば


というように、マップチップに数字をわりあてておき
1,1,1,1,1
1,2,2,2,1
1,2,2,2,1
というデータをもとにマップを作ると

このようなマップになるのです。イメージができましたか?
さて、自分でポチポチ数字を打っていくのでも
せっかくなのでなにかツールを使ってみましょう。
フリーソフト「マップエディターQuoyle」というソフトはpng
マップチップを
ダウンロードして、zipファイルを
中に「Quoyle.exe」がありますのでこれを起動します。

まずは「マップデータ

こんな画面が開きます。
今回は、マップチップのサイズが32*32なので
「マップサイズX:15 Y:12」
「チップサイズX:32 Y:32」 に
次にマップチップの

先ほどダウンロードしておいたmap.pngの
ここで、自分で用意した
本体
また、

マップチップの一番左上のマスが
これを


つぎに、ペンモードを「ノーマル」にもどして
パレットから水のチップをえらび、海や川にしたい部分をぬっていきましょう。
これで、ベースの地面の部分ができました。
つぎは、木や山などのオブジェクトを

オブジェクトは、地面の上に
レイヤーの「
これをクリックして

こんなかんじになりました。
オブジェクトのフチが白くなっていますが
Scratch上で
マップデータができたら、いったん

ファイルから「名前を付けて保存」をえらんで・・・

名前はなんでもOKです。(
今回は「scratch_world.qmp」としました。
テキストデータかきだし、よみこみ
作ったマップデータを、テキストデータにコンバート(
Quoyleと同じフォルダのなかに「Converter.exe」というファイルがありますので
これをクリックして起動します。

先ほど作ったマップデータ「○○.qmp」ファイルをこの画面にドラッグ&ドロップするか
「QMPファイルを開く」から、開きます。
さいごに「コンバート開始」のボタンをおすと、

qmpファイルと同じ名前.txtで保存されています。

テキストの中身はこんなかんじです。
このままだと、文字データも入っているので
マップデータのみにしていきましょう。

まず、レイヤー1のデータ部分だけを
右クリック→「コピー」します。(Ctrl+CでもOK)

コピーしたら、「ファイル」→「

「右クリック」→「
で、コピーしたデータをはりつけます。
はりつけたら、「ファイル」→「名前を付けて保存」で保存しましょう。
ファイル名は何でもいいですが
地面のデータだとわかるようにしましょう。
今回は「map.txt」としました。
同じ
あたらしいファイルにコピーして保存しましょう。
こちらはオブジェクトのデータですので「obj.txt」としました。
データができたら、Scratchにデータを
まず、データを

今回は、マップとオブジェを
ステージに

ステージに
「

先ほど作った「map.txt」をえらびます。

こんなかんじで
12行目の
(map.txtのほうで
こうしてます。プログラムのほうで
マップデータを
map.txtのほうにマップデータを
(前のリストに
オブジェのほうも同じように、
マップ生成プログラム
データができたら、いよいよマップを配置していきましょう。こちらのプロジェクトから
スクリプトの中身をみてみましょう。
https://scratch.mit.edu/projects/108698843/#editor
マップのスクリプトがこんなかんじ

コンマがくるまでは変数「コスチューム」のなかにデータをためていき
コンマがきたら、コスチュームをかえてスタンプしています。
この

こうすると
マップの
オブジェの

オブジェの場合は、スタンプしない部分(データが0のところ)があるので
「0じゃなければスタンプ」のようにしています。
さらに
(これはスタンプする
ちょっと大きくしてスタンプしています。
マップ→オブジェの
「0秒まつ」でオブジェのほうの
これで

キレイに表示することができました。
ループの回数がおかしくないか、列と行をまちがえていないか
など確認してみて下さい。
まとめ
今回は、CSVデータを作る→読んでいくマップ
マップチップをデータ通りに
そのゲーム
マップが少なければ、大きい
たとえば主人公が動くのにあわせてマップが動くようなゲームの時は
マップチップのほうが
自分が作りたいゲームにあわせて工夫してみて下さいね。
コメント