The next little game in the series where I make a fancy rogue game.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include <utility>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
struct Pair {
|
|
|
|
size_t j = 0;
|
|
|
|
size_t i = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef std::vector<Pair> PairList;
|
|
|
|
typedef std::vector<int> MatrixRow;
|
|
|
|
typedef std::vector<MatrixRow> Matrix;
|
|
|
|
|
|
|
|
void dump_map(const std::string &msg, Matrix &map);
|
|
|
|
void add_neighbors(Matrix &closed, size_t j, size_t i);
|
|
|
|
|
|
|
|
class Map {
|
|
|
|
Matrix m_input_map;
|
|
|
|
Matrix m_walls_map;
|
|
|
|
Matrix m_paths;
|
|
|
|
int m_limit = 0;
|
|
|
|
public:
|
|
|
|
|
|
|
|
void make_paths();
|
|
|
|
|
|
|
|
Matrix& paths() { return m_paths; }
|
|
|
|
Matrix& input_map() { return m_input_map; }
|
|
|
|
Matrix& walls() { return m_walls_map; }
|
|
|
|
int limit() { return m_limit; }
|
|
|
|
|
|
|
|
Map(Matrix input_map, Matrix walls_map, int limit) :
|
|
|
|
m_input_map(input_map),
|
|
|
|
m_walls_map(walls_map), m_limit(limit) {
|
|
|
|
}
|
|
|
|
|
|
|
|
Map(Map &map) = delete;
|
|
|
|
};
|