※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

 「だいたい、MAPとはなんたるか。
その正体は1と0の数字の羅列なわけです。たとえば、下に簡単なマップを書きましょう。
1が通れるところ。0が通れないところです。
00000000000000000
01000000000000000
01100000000000000
00100000000000000
00111111111110000
00011111111000000
00001111110000000
00000111000000000
00000000000000000
なんとなく、イメージできるんじゃないですか? 通路を南に進んでいくと、三角形の洞窟に出るマップです。

 まあ、こんな気分でマップというのはできてるわけなんですが、いくらなんでも、こりゃ乱暴です。
事実、Tonyuのマップはもっと高度なわけですが、それでも基本的な考え方は同じなので覚えておいてください。
ちなみに、これをもう少し発展させたのがテキスト系ローグゲームで、いわゆる「NetHack」や「変愚蛮怒」などなわけです。
 これらローグ系は、HSPやCでは簡単に作れるのですがTonyuには向きません
無駄に疲れるので作ろうとはしないほうがいいでしょう。(05,8,23追記「って、ロゴスさんがローグライク作っちゃいました! すごいッス!!」)

 Tonyuにおける、マップとはどういうものか。下に写真で載せておきましょう。

これがその正体で、「ページ名.map」で保存されています。クリックで拡大。


こっちは、その実行した状態。同じく、クリックで拡大。

 なんでも、マップを保存したりロードしたりするメソッドがあるようなので、それらを駆使すれば、一ページで色々なマップを使いまわしできるようになるわけです。
(07年9月17日追記:これに対応したマップメソッドのサンプルはこちら)

 今日ご紹介したいMAPの概念は、マップ座標についてです。
んなもん聞いたこともない? そりゃ当然。今、私が考えました(笑)
さて、このマップ座標というもの。何に使うのかというと、もっぱら$map.set()で使われるのです。
グラフィカルにいったほうが分かりやすかろうということで、下に図表で載せておきます。

なお、サイズは640x480。一マスは32x32です。クリックで拡大版を表示後、ダウンロードしていただければそのままお使いになれます。
オブジェクトのpに指定して、マップ座標上でのキャラクターの位置を確認するのにお使いください。

 このように、MAP座標というのは一番左上を座標(0,0)として基本的に整数値でのみ存在します。(まあ…整数でなくても指定できますけどね^^;)
現在のオブジェクト座標をマップ座標に変換するには、
x_pos=trunc(x/$map.pwidth);
y_pos=trunc(y/$map.pheight);
となっています。x_posとy_posにそれぞれ、マップ座標におけるz座標とy座標が代入されます。
この値は、そのままオブジェクト位置のマップを指定するときに利用することができます。


 体調が悪いもので、あんまし色々書けないんですよね…。
えっと、CやHSPでのスクロールというものは、画面に入ってきたマップを描写するという考え方です。
対してTonyuでは、全てのマップを描写するという考え方です(07年9月17日追記:これ、間違ってた気がする。Tonyuにおいても描写は画面内+1の範囲で行っていた気がしますが、忘れました^^;)。
気分の違いですが、CやHSPでは画面を固定してマップを移動させるのに対して、Tonyuではマップを固定して画面を移動させる感じです。
どうも、CやHSPのやり方のほうが効率がいい気もしてならなかったりするごま太郎でした。
たぶん命令文を分かりやすくする関係なんだろうな…。
  
添付ファイル