地形生成を試みる


2017年 5月30日~6月2日
 
 
 さて、今回は MAP生成をやって行く事にする。
 
 
 まずは予定している属性 6つの勢力にそれぞれ対応した地形というものを考える。

 左から火山(火)水辺(水)草原(風)山(地)森(光)沼地(闇)という予定。

 それにしてもひどいグラだなあ。

 グラについてはそのうちエンジェルメーカー氏に描いてもらうとして、あの人も働くだけでほとんど死んでるからなあ、あんまり期待はできない。
 
 
 とりあえず、まず単純に乱数で表示してみる。

 こんな感じだ

 これだけでも戦略マップとしては面白く無いので、進入できない地形を作る。
 
 
 と、言うのは簡単だけどプログラムは多少てこずった。

 何が難しいって地形が空白によって分断してるのをどう判別するか分からない。
 地形が全部陸続きになってないと、とりあえずゲームをクリアできない。

 思考錯誤の末、結局 1マスから隣接するマスを調べていって、全部調べた時に最初に出したマスの総数と隣接で調べたマスの総数が同じなら全部陸続きという方法にした。

 もっとスマートな方法があるのかも知れないが、自分にはこれ以上分からない。

 最初はもう一つの方法で、真ん中の 13番から隣接するマップを作る方法をやってみたが、どうも地形がダマになって面白く無い。

 そこで、始めに一度 25マス全部地形で埋めてから、地形無しをランダムに引き算する事にした、
 こうするといい具合に地形に変化が出る。

 今は一応引き算するのは 5マスにした。

 5マスでもこんな感じにできる

 ソース

 6角形 HEXの隣接マスの移動座標計算の仕方。

 上は-1、下は+1だとして、右上は必ず+3、右下は必ず+4、左下は-3、左上は-4になる。

 これはこのマップが縦 4+3で 7で一周するから。

 もちろん座標の取り方がx,yのようなものなら、別のやり方になるだろう。

 外周の空白に隣接するマスは例外設定を設けている if mapn\7=0のようなものだ。
 これは 7の倍数の HEX番号の上は無い事を意味します。

 データとソースのセットをダウンロード出来るようにするので、参考にしたい人はどうぞ。

hex_bulid ←zipフォルダ

コメントを残す

メールアドレスが公開されることはありません。