Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <random>
- #include <algorithm>
- using namespace std;
- void gerarCaminho(vector<vector<char>>& layout, int x, int y) {
- // mover pra cima, baixo, esquerda e direita
- vector<pair<int, int>> directions = {{-2, 0}, {2, 0}, {0, -2}, {0, 2}};
- random_device rd;
- mt19937 g(rd());
- shuffle(directions.begin(), directions.end(), g);
- // tenta criar um caminho nas 4 direções
- for (auto& dir : directions) {
- int nx = x + dir.first;
- int ny = y + dir.second;
- // Checa se está dentro das paredes
- if (nx > 0 && nx < layout.size() - 1 && ny > 0 && ny < layout[0].size() - 1 && layout[nx][ny] == '|') {
- // troca as paredes por corredores
- layout[nx][ny] = ' ';
- layout[x + dir.first / 2][y + dir.second / 2] = ' ';
- // gerar as posições recursivamente
- gerarCaminho(layout, nx, ny);
- }
- }
- }
- int main() {
- //altura e largura
- int largura = 49;
- int comprimento = 49;
- // enche de paredes
- vector<vector<char>> layout(largura, vector<char>(comprimento, '|'));
- // definir o começo
- layout[1][1] = ' ';
- // começar a gerar o caminho a partir do começo
- gerarCaminho(layout, 1, 1);
- // ver o resultado
- for (int i = 0; i < largura; i++) {
- for (int j = 0; j < comprimento; j++) {
- cout << layout[i][j] << " ";
- }
- cout << endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment