ローグライクのマップについて

タグの編集
投稿者   (社会人) 投稿日時 2015/11/17 13:54:13
初投稿になります。
ローグライクのゲームを作りたいと思い、
http://hinagis.blog33.fc2.com/blog-category-5.html 
このサイト様を参考にしてVBで作成していたのですが、キャラの移動範囲を決めるために
マップデータをキャラクラスに受け渡し、壁か道かの判定をしたいのですが、
マップデータの受け渡しがうまくいきません。

いろいろと調べてみたのですが行き詰ってしまい、何かいい案をお持ちではないだろうかと
皆様の意見を聞きにきました。
こちらプログラム初心者で至らない点など多いでしょうがご指導よろしくお願いいたします。
投稿者 るきお  (社会人) 投稿日時 2015/11/26 13:16:48
URLのページが見られなくなっているようです。

>マップデータの受け渡しがうまくいきません。
何がうまくいかないのでしょうか?
もう少し情報をもらえないと、案も出せないです。

・エラーになる(どういうエラーか?)
・エラーにはならないが想定した結果と違う。(どういう結果を想定し、実際はどうなるか?)
・想定した結果になるが遅い。
など。

ここで古典的なRPGのサンプルプログラムを公開しているので、よろしければ参考にしてください。
http://homepage1.nifty.com/rucio/main/DownLoad/Index_dl.htm

このプログラムではPlayerUnitクラスがマップ上を移動する主人公です。
指定した方向に移動できるかはPlayerUnit.CanMoveメソッドで判断しています。

この中でマップデータにアクセスしています。
マップデータはプログラムのどこからでも参照できるようにしています。
'▼移動先の地形が進入可能か 
Dim data As Byte = Common.Map.MapData(Me.MapPoint.X + diffX, Me.MapPoint.Y + diffY)

If Landform(data).CanApproach Then
    'Return True 
Else
    Return False
End If


Common.Map.MapDataで移動先の地形を取得。
地形はデータ上は数字。0が海、1が平野、2が森と言う具体。
CanApproachでその地形が侵入可能であるか判断。
Landformは地形番号(0が海、1が平野…)を渡すと地形の一般的な情報を返す。(このサンプルでは侵入可能かどうかだけ)