diff --git a/q31/mapGrid.h b/q31/mapGrid.h new file mode 100644 index 0000000..7fb02d4 --- /dev/null +++ b/q31/mapGrid.h @@ -0,0 +1,50 @@ +#include +#include +#include +#include + +enum class TileType{ + EMPTY, + WALL, + NOMAL_BEAN, + ENERGY_BEAN, + PACMAN, + GHOST +}; + +struct Tile{ + TileType type; + std::unordered_map tileTypeToPlaceholder{ + {TileType::EMPTY, " "}, + {TileType::WALL, "#"}, + {TileType::NOMAL_BEAN, "."}, + {TileType::ENERGY_BEAN, "o"}, + {TileType::PACMAN, "P"}, + {TileType::GHOST, "G"} + }; + + Tile() = default; + Tile(TileType t) : type(t) {} +}; + +class MapGrid{ +public: + MapGrid() = default; + + MapGrid(const std::string& mapFilePath); + + void loadMap(const std::string& mapFilePath);; + + std::unique_ptr> getSize() const; + + bool isValidPosition(int x, int y) const; + + void setTile(int x, int y, TileType type, const std::string& placeholder); + + void renderMap() const; + + void move(); // 应该是 W A S D 移动 +private: + std::vector> grid; + std::unique_ptr> size; +}; \ No newline at end of file