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.
program ini akan membuat dungeon secara otomatis dengan beberapa tahapan
- membuat ruangan pada dungeon dengan BSP Tree. klik link untuk melihat cara pembuatan
- kemudian membuat jalur pada dungeon dengan recursive backtracking. klik link untuk melihat cara pembuatan
- lalu menghubungkan ruangan dengan jalur yang telah dibuat. klik link untuk melihat cara pembuatan
- membuat jalur masuk dan keluar dungeon.
- compiler c++
- 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 |
- include file
dungeon.h
pada program anda
#include"dungeon.h"
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
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
berikut beberapa cara untuk membuat dungeon menggunakan framework ini :
#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;
}
#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;
}
#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
berikut merupakan contoh output sample output.txt
dari program
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- visual studio community - IDE yang digunakan
- doxygen - generator untuk dokumentasi code
project ini menggunakan lisensi MIT License - lihat file LICENSE.md untuk rincian