Skip to content

dungeon generator menggunakan algoritma BSP Tree dan Revursive Backtracking

License

Notifications You must be signed in to change notification settings

ansharmuhammad/DungeonGenCPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dungeon Generator (BSP Tree & Recursive Backtracking)

Class c++ untuk membuat dungeon secara otomatis. Dungeon yang di desain otomatis menggunakan penggabungan algoritma BSP Tree dan Recursive Backtracker. yang dimana BSP Tree berfungsi untuk membuat ruangan dalam dungeon (ruangan juga dapat dibuat secara manual) dan Recursive Backtracker (atau juga dikenal sebagai Deep First Search) untuk membuat labirin nya.

Bagaimana Program Ini Bekerja

program ini akan membuat dungeon secara otomatis dengan beberapa tahapan

  1. membuat ruangan pada dungeon dengan BSP Tree. klik link untuk melihat cara pembuatan
  2. kemudian membuat jalur pada dungeon dengan recursive backtracking. klik link untuk melihat cara pembuatan
  3. lalu menghubungkan ruangan dengan jalur yang telah dibuat. klik link untuk melihat cara pembuatan
  4. membuat jalur masuk dan keluar dungeon.

Kebutuhan

  • compiler c++

Instalasi

  1. masukkan seluruh file di folder (file .cpp dan .h) kecuali example.cpp ke dalam project anda
Nama Keterangan
rectangle struktur data yang merepresentasikan kotak pada program
cell struktur data yang merepresentasikan cell yang dapat menyimpan kotak
gridm objek grid map yaitu struktur data yang menyimpan kumpulan cell pada titik x,y
BSPTree struktur data pohon(tree) yang dimana simpul child menyimpan data pecahan dari data parentnya
labyrinth objek untuk men generate maze pada grid map dengan metode recursive bactracking
dungeon objek untuk men generate dungeon dengan menggabungkan BSPTree dan labyrinth
  1. include file dungeon.h pada program anda
#include"dungeon.h"

Daftar Fungsi

berikut daftar fungsi dan kegunaan dungeon.h :

fungsi kegunaan
execute generate ulang dungeon dengan attribut baru
show menampilkan dungeon pada console
save(string nama_file) menyimpan dungeon dalam file .txt

lihat dokumentasi kode.pdf untuk rincian

Daftar Attribute

berikut daftar attribut dan keterangan dungeon.h :

fungsi tipe data keterangan default
proses bool true untuk melihat proses pembuatan false
lebar, panjang int lebar dan panjang dungeon 40, 40
bsptree bool true jika ingin membuat ruangan dengan algoritma BSPTree true
minLebar, minPanjang, maxLebar, maxPanjang int parameter yang digunakan oleh algoritma BSPTree 8,8,15,15
listRuanganManual vector list yang berisikan definisi ruangan yang di inisiasi secara manual empty
inOut bool bernilai true jika menginginkan dungeon dengan jalan masuk dan keluar true

lihat dungeon.h dan dungeon.cpp untuk rincian

Pemakaian

berikut beberapa cara untuk membuat dungeon menggunakan framework ini :

Membuat Dungeon Dengan Nilai Default

#include<iostream>
#include"dungeon.h"
using namespace std;
int main(){
  //membuat objek  dungeon
  dungeon level;
  //menampilkan dungeon dengan parameter default
  level.show();
  //menyimpan dungeon menjadi file berekstensi .txt
  level.save("dungeon");
  cout << "dungeon tersimpan. silahan periksa file di dalam direktori" << endl << endl;
  system("pause");
  return 0;
}

Membuat Dungeon Dengan BSP Tree

#include<iostream>
#include"dungeon.h"
using namespace std;
int main(){
  //membuat objek  dungeon
  dungeon level;
  ///////////////////////////////////////////////////////////
  /// dungeon yang menggunakan BSPTree
  ///////////////////////////////////////////////////////////
  //inisiasi
  level.proses = false;
  level.lebar = 45;
  level.panjang = 45;
  level.bsptree = true;
  level.minLebar = 10; level.minPanjang = 10; level.maxLebar = 12; level.maxPanjang = 12;
  level.inOut = false;
  //end of inisiasi
  
  //build ulang dungeon
  level.execute();
  level.show();
  system("pause");
  return 0;
}

Membuat Dungeon Dengan inisiasi Ruangan Secara Manual

#include<iostream>
#include"dungeon.h"
using namespace std;
int main(){
  //membuat objek  dungeon
  dungeon level;
  ///////////////////////////////////////////////////////////
  /// dungeon yang menggunakan deinisi ruangan secara manual
  ///////////////////////////////////////////////////////////
  //inisiasi
  level.proses = false;
  level.lebar = 20;
  level.panjang = 20;
  level.bsptree = false; //jika ruangan di inisiasi secara manual, maka bsptree harus bernilai false
  level.listRuanganManual.clear(); //list nya harus di kosongkan dulu
  //inisiasi ruangan secara manual
  rectangle ruangan;
  ruangan.reDefine(0, 0, 5, 5); level.listRuanganManual.push_back(ruangan);
  ruangan.reDefine(14, 0, 5, 5); level.listRuanganManual.push_back(ruangan);
  ruangan.reDefine(0, 14, 5, 5); level.listRuanganManual.push_back(ruangan);
  ruangan.reDefine(14, 14, 5, 5); level.listRuanganManual.push_back(ruangan);
  ruangan.reDefine(7, 7, 5, 5); level.listRuanganManual.push_back(ruangan);
  level.inOut = false;
  //end of inisiasi
  //build ulang dungeon
  level.execute();
  level.show();
  system("pause");
  return 0;
}

untuk lebih rinci silahkan lihat file example.cpp

Screenshot

ss1 ss2 ss3

Output

berikut merupakan contoh output sample output.txt dari program

* * * * * * * * * * * * * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * 
* * * *   *   *       *                               *                           * * * * * 
* * * *   *   *   *   *   *   * * * * * * * * * * *   * * * * * * * * * * * * *   * * * * * 
* * * *   *       *       *   * *               * *               * * * * *       * * * * * 
* * * *   *   * * *   * * *   * *               * * * * * * * *   *       *   * * * * * * * 
* * * *   *   * * *   *       * *               * *               *               * * * * * 
* * * *   *           *   * * * *               * *   * * * * * * *       *   *   * * * * * 
* * * *   *                   * *               * *   *       *   *       *   *   * * * * * 
* * * *   *           * * *   * *               * *   *   *   *   *       *   *   * * * * * 
* * * *   * * * * * * *       * *               * *       *   *   *       *   *   * * * * * 
* * * *   * * * * * * *   * * * *               * * * * * *   *           * * *   * * * * * 
* * * *   *               *   * *               * *       *   *   * * *   *       * * * * * 
* * * *   * * * * * * *   *   * * *   * * *   * * *   *   *   *   * * *   *   *   * * * * * 
* * * *                   *                           *   *               *   *   * * * * * 
* * * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * *   *   *   * * * * * 
* * *                   * *   * * * * * * * * * * * * * * * * * * *       *   *   * * * * * 
* * *                   * *   *                                   *   * * *   * * * * * * * 
* * *                   * *   *                                   *       *       * * * * * 
* * *                   * *   *                                   * * *   *   *   * * * * * 
* * *                   * *   *                                   *       *   *   * * * * * 
* * *                   * *                                       *   * * * * *   * * * * * 
* * *                   * *   * * * * * * *   * * * * * * * * * * *       *       * * * * * 
* * * * * * * * *   *   * *   * * * * * * *   * * * * * * * * * * * * *   *   *   * * * * * 
* * * * * * * * *   *   * *   *                                               *   * * * * * 
* * *                   * *   *       *   * * * * *   * * * * * * * * * * * * *   * * * * * 
* * *                   * *   *               * * *   * * * * * * * * *   *       * * * * * 
* * *                   * *   *       * * *   * *                   * *   *   * * * * * * * 
* * *                   * *   *       *       * *                   * *   *   *   * * * * * 
* * *                   * *   *       *   * * * *                   * *   *   *   * * * * * 
* * *                   * *   *       *   *   * * * * * * * * * * * * *   *   *   * * * * * 
* * *                   * *   *       *   *   * * * * * * * * * * * * *   *   *   * * * * * 
* * *                   * *   *       *   *       * * * * * * * * *       *   *   * * * * * 
* * *                         * * * * *   * * *   * *           * *   *   *   *   * * * * * 
* * *                   * *       *   *       *                 * *   *   *       * * * * * 
* * *                   * *   *   *   * * *   *   * *           * *   * * * * *   * * * * * 
* * * * * * * * * * * * * *   *       *       *   * *           * *           *   * * * * * 
* * * * * * * * * * * * * *   * * * * *   * * *   * *           * *   *   * * *   * * * * * 
* * * *                                           * *                 *           * * * * * 
* * * * * * * * * * * * *   * * * * * * * * * * * * *           * * * * * * * * * * * * * * 
* * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * * * * * *   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 

Dibuat Menggunakan

Authors

Lisensi

project ini menggunakan lisensi MIT License - lihat file LICENSE.md untuk rincian

About

dungeon generator menggunakan algoritma BSP Tree dan Revursive Backtracking

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages