LoginSignup
128

More than 3 years have passed since last update.

洞窟の自動生成(ローグライク穴掘り法)💀

Last updated at Posted at 2019-01-27

💀洞窟を創造する💀

rlcave.gif

今回は洞窟をつくります。

💀ローグライクのおさらい💀

>> [DTL]ローグライク(穴掘り法)💀

以前作ったローグライク穴掘り法のアルゴリズムを使用します。
詳しくは前回の記事をご参照ください。

rl4.gif

💀手順💀

1. ローグライク穴掘り法でローグライクダンジョンの生成
2. 1以上の数値と0の数値で2値化する
3. ノイズを加えて洞窟っぽくする

こんな感じでいきます。

1.ローグライク穴掘り法でローグライクダンジョンの生成

前回の解説記事の時に作った"RogueLike関数"を使用します。

生成
int main() {
    std::array<std::array<std::uint8_t, 64>, 32> matrix{ {} };
    dtl::RogueLike<std::uint8_t> d(matrix, 20);
}

rl.gif

2. 1以上の数値と0の数値で2値化する

dtl::RogueLike<std::uint8_t> d(matrix, 20);
dtl::dungeonBinarization(matrix_, 1);
ID 名前
0. 外壁 ■■■■
1. 内壁 ■■■■
2. 部屋 ■■■■
3. 玄関 ■■■■
4. 通路 ■■■■

1以上の数値を1に変えます。

rlcave_no.gif

ほんの少し洞窟みが出てきました。

3. ノイズを加えて洞窟っぽくする

このままだとあまり洞窟っぽくないのでノイズを加えます。

dtl::RogueLike<std::uint8_t> d(matrix, 20);
dtl::dungeonBinarization(matrix_, 1);
dtl::noiseShoreBothBool(matrix_, 0.1);

💀完成💀

無事に実装できました。

rlcave.gif

💀実装ライブラリ(ソースコード)💀

今回解説した洞窟の自動生成は"Dungeon Template Library""RogueLike Cave"として実装されています。
ぜひ、活用してみてください!

logo640.gif

💀ソースコードのライセンス💀

These codes are licensed under CC0.
CC0

この記事のソースコードはCC0ライセンスとします。
ぜひ、自由に改変して遊んでみてください。

最後までお読みいただきありがとうございました!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
128