-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdungeon.h
More file actions
167 lines (146 loc) · 3.93 KB
/
dungeon.h
File metadata and controls
167 lines (146 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/**
* @brief merupakan objek untuk menggenerate duneon dalam bentuk martriks char
*
* @file dungeon.h
* @author Muhammad Anshar
* @date 2018-06-02
*/
#ifndef _DUNGEON_H
#define _DUNGEON_H
#pragma once
#include<cstdlib> // random
#include<time.h> // time
#include<vector> // vector list
#include"rectangle.h" // rectangle
#include"cell.h" // cell
#include"gridm.h" // gridm
#include"BSPTree.h" // tree bsp
#include"labyrinth.h" // labyrinth
#include<string> // string
/**
* @mainpage dungeon generator (BSP Tree & recursive backtracking)
*
* Class 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.
*/
/**
* @brief merupakan satu satunya objek yang di #include untuk membuat dungeon menggunakan fungsi dan mengatur attributnya.
*
*/
class dungeon
{
private:
/**
* @brief struc yang menyimpan informasi suatu cell yang bisa digunakan sebagai penghubung
*
*/
struct cellConnector {
cell Cell;
// 1 or 2 cell
int step;
// "u"p , "d"own, "l"eft, "r"ight
char direction;
};
/**
* @brief fungsi untuk mendapatkan angka secara acak
*
* @param start nilai minimum angka acak
* @param size_index panjang jangkauan nilai acak
* @return int nilai acak antara start hingga start + size_index
*/
int randomRange(int start, int size_index);
/**
* @brief fungsi untuk membuat ruangan dengan bsp tree
*
* @param peta [gridm] grid map untuk membuat ruangan
* @param proses [bool] true untuk melihat proses pembuatan
* @param minW [int] lebar minimal
* @param minH [int] panjang minimal
* @param maxW [int] lebar maksimal
* @param maxH [int] panjang maksimal
* @return gridm
*/
gridm executeBsp(gridm peta, bool proses, int minW, int minH, int maxW, int maxH);
/**
* @brief fungsi untuk membuat ruangan secara manual
*
* @param peta
* @param listRoom
* @return gridm
*/
gridm executeManual(gridm peta, vector<rectangle> listRoom);
/**
* @brief fungsi untuk membuat maze
*
* @param peta
* @param proses
* @return gridm
*/
gridm executeMaze(gridm peta, bool proses);
/**
* @brief fungsi untuk mendapat daftar cellyang bisa dijadikan connector
*
* @param map
* @return vector<cellConnector>
*/
vector<cellConnector> candidateConnector(gridm map);
/**
* @brief fungsi untuk membuat connector yang dipilih dari calon connector
*
* @param peta
* @param proses
* @return gridm
*/
gridm executeConnector(gridm peta, bool proses);
/**
* @brief fungsi untuk membuat jalan masuk dan keluar
*
* @param peta
* @param proses
* @return gridm
*/
gridm executeInOut(gridm peta, bool proses);
/**
* @brief merupakan atribut untuk menyimpan data dungeon
*
*/
gridm peta;
public:
/**
* @brief Construct a new dungeon object
*
*/
dungeon();
/**
* @brief Destroy the dungeon object
*
*/
virtual ~dungeon();
/**
* @brief fungsi untuk menapilkan hasil dungeon yang dibuat
*
*/
void show();
/**
* @brief mfungsi untuk men generate ulang dungeon dengan nilai attribut yang telah dirubah
*
*/
void execute();
/**
* @brief fungsi untuk menyimpandungeon ke dalam file .txt
*
* @param name : nama file yang diinginkan
*/
void save(string name);
//attribut sebagai parameter
bool proses; ///< true untuk melihat proses pembuatan
int lebar , panjang;///< lebar dan panjang dungeon
bool bsptree; ///< true jika ingin membuat ruangan dengan algoritma BSPTree
int minLebar , minPanjang , maxLebar , maxPanjang ; ///< parameter yang digunakan oleh algoritma BSPTree
vector<rectangle> listRuanganManual; ///< list yang berisikan definisi ruangan yang di inisiasi secara manual
bool inOut; ///< bernilai true jika menginginkan dungeon dengan jalan masuk dan keluar
};
#endif // DUNGEON_H