Compare commits
	
		
			1 Commits 
		
	
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						fba5e3b2ab | 
| 
						 | 
					@ -19,7 +19,7 @@ MazeData ConfigReader::getSymbols() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return symbols;
 | 
					    return symbols;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void ConfigReader::setSymbols(MazeData &value)
 | 
					void ConfigReader::setSymbols(MazeData value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    symbols = value;
 | 
					    symbols = value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -87,14 +87,14 @@ bool ConfigReader::load(const std::string &path)
 | 
				
			||||||
        else if (section == "Difficulty")
 | 
					        else if (section == "Difficulty")
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (key == "MonsterAI")
 | 
					            if (key == "MonsterAI")
 | 
				
			||||||
                difficulty = std::stoi(value);
 | 
					                symbols.setDifficulty(std::stoi(value));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (section == "Maze")
 | 
					        else if (section == "Maze")
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (key == "Width")
 | 
					            if (key == "Width")
 | 
				
			||||||
                mazeWidth = std::stoi(value);
 | 
					                symbols.setMazeWidth(std::stoi(value));
 | 
				
			||||||
            else if (key == "Height")
 | 
					            else if (key == "Height")
 | 
				
			||||||
                mazeHeight = std::stoi(value);
 | 
					                symbols.setMazeHeight(std::stoi(value));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "MazeData.h"
 | 
					#include "MazeData.h"
 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@ public:
 | 
				
			||||||
    bool load(const std::string &path);
 | 
					    bool load(const std::string &path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MazeData getSymbols() const;
 | 
					    MazeData getSymbols() const;
 | 
				
			||||||
    void setSymbols(MazeData &value);
 | 
					    void setSymbols(MazeData value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int getDifficulty();
 | 
					    int getDifficulty();
 | 
				
			||||||
    int getMazeHeight();
 | 
					    int getMazeHeight();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,12 +14,18 @@ void Game::loadConfig(const std::string &filePath)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_config.setSymbols(m_mazeData);
 | 
					    m_config.setSymbols(m_mazeData);
 | 
				
			||||||
    m_config.load(filePath);
 | 
					    m_config.load(filePath);
 | 
				
			||||||
 | 
					    m_mazeData = m_config.getSymbols();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void Game::initMaze()
 | 
					void Game::initMaze()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_maze.setMazeData(m_mazeData);
 | 
				
			||||||
 | 
					    m_maze.generate();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void Game::run()
 | 
					void Game::run()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    Position player(1, 1);
 | 
				
			||||||
 | 
					    std::vector<Position> monster{Position(2, 2), Position(4, 4)};
 | 
				
			||||||
 | 
					    m_maze.draw(player,monster);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Game::printConfig()
 | 
					void Game::printConfig()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "Config.h"
 | 
					#include "Config.h"
 | 
				
			||||||
#include "MazeData.h"
 | 
					#include "MazeData.h"
 | 
				
			||||||
 | 
					#include "Maze.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ class Game
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    ConfigReader m_config;
 | 
					    ConfigReader m_config;
 | 
				
			||||||
    MazeData m_mazeData;
 | 
					    MazeData m_mazeData;
 | 
				
			||||||
 | 
					    Maze m_maze;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool m_isRunning = true;
 | 
					    bool m_isRunning = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
#include "Maze.h"
 | 
					#include "Maze.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
| 
						 | 
					@ -20,15 +20,17 @@ Maze::~Maze()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Maze::setMazeData(MazeData &data)
 | 
					void Maze::setMazeData(const MazeData &data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    m_symbols = data;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Maze::generate(int w, int h, const MazeData &sym)
 | 
					void Maze::generate()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_symbols = sym;
 | 
					    int mazeWidth = m_symbols.getMazeWidth();
 | 
				
			||||||
    m_width = (w % 2 == 0) ? w + 1 : w;
 | 
					    int mazeHeight = m_symbols.getMazeHeight();
 | 
				
			||||||
    m_height = (h % 2 == 0) ? h + 1 : h;
 | 
					    m_width = (mazeWidth % 2 == 0) ? mazeWidth + 1 : mazeWidth;
 | 
				
			||||||
 | 
					    m_height = (mazeHeight % 2 == 0) ? mazeHeight + 1 : mazeHeight;
 | 
				
			||||||
    m_grid.assign(m_height, std::string(m_width, m_symbols.getWall()));
 | 
					    m_grid.assign(m_height, std::string(m_width, m_symbols.getWall()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::vector<std::vector<Cell>> cells(m_height, std::vector<Cell>(m_width));
 | 
					    std::vector<std::vector<Cell>> cells(m_height, std::vector<Cell>(m_width));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "MazeData.h"
 | 
					#include "MazeData.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,9 +20,9 @@ public:
 | 
				
			||||||
    Maze();
 | 
					    Maze();
 | 
				
			||||||
    ~Maze();
 | 
					    ~Maze();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void setMazeData(MazeData &data);
 | 
					    void setMazeData(const MazeData &data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void generate(int w, int h, const MazeData &sym);
 | 
					    void generate();
 | 
				
			||||||
    void draw(const Position &playerPos, const std::vector<Position> &monsterPos) const;
 | 
					    void draw(const Position &playerPos, const std::vector<Position> &monsterPos) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool isWalkable(const Position &p) const;
 | 
					    bool isWalkable(const Position &p) const;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
#include "MazeData.h"
 | 
					#include "MazeData.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MazeData::MazeData()
 | 
					MazeData::MazeData()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -66,4 +66,34 @@ char MazeData::getExit() const
 | 
				
			||||||
void MazeData::setExit(char value)
 | 
					void MazeData::setExit(char value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    exit = value;
 | 
					    exit = value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MazeData::getDifficulty() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return m_difficulty;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MazeData::setDifficulty(int value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_difficulty = value;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MazeData::getMazeWidth() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return m_mazeWidth;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MazeData::setMazeWidth(int value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_mazeWidth = value;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MazeData::getMazeHeight() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return m_mazeHeight;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MazeData::setMazeHeight(int value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    m_mazeHeight = value;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MazeData
 | 
					class MazeData
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,14 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void setExit(char value);
 | 
					    void setExit(char value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int getDifficulty() const;
 | 
				
			||||||
 | 
					    void setDifficulty(int value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int getMazeWidth() const;
 | 
				
			||||||
 | 
					    void setMazeWidth(int value);
 | 
				
			||||||
 | 
					    int getMazeHeight() const;
 | 
				
			||||||
 | 
					    void setMazeHeight(int value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    char wall;
 | 
					    char wall;
 | 
				
			||||||
    char empty;
 | 
					    char empty;
 | 
				
			||||||
| 
						 | 
					@ -37,4 +45,9 @@ private:
 | 
				
			||||||
    char monster;
 | 
					    char monster;
 | 
				
			||||||
    char trap;
 | 
					    char trap;
 | 
				
			||||||
    char exit;
 | 
					    char exit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int m_difficulty = 0; // 怪物AI难度
 | 
				
			||||||
 | 
					    int m_mazeWidth = 21;
 | 
				
			||||||
 | 
					    int m_mazeHeight = 21;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ int main()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Game game;
 | 
					    Game game;
 | 
				
			||||||
    game.loadConfig("config.ini");
 | 
					    game.loadConfig("config.ini");
 | 
				
			||||||
    game.printConfig();
 | 
					    //game.printConfig();
 | 
				
			||||||
    game.initMaze();
 | 
					    game.initMaze();
 | 
				
			||||||
    game.run();
 | 
					    game.run();
 | 
				
			||||||
    system("pause");
 | 
					    system("pause");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue