diff --git a/mazzGame/CMakeLists.txt b/mazzGame/CMakeLists.txt index a2b2c7e..a00aa7d 100644 --- a/mazzGame/CMakeLists.txt +++ b/mazzGame/CMakeLists.txt @@ -14,7 +14,7 @@ project ("mazzGame") aux_source_directory(${PROJECT_SOURCE_DIR}/src sourceCodeList) # 将源代码添加到此项目的可执行文件。 -add_executable (mazzGame ${sourceCodeList}) +add_executable (mazzGame ${sourceCodeList} "src/Maze.cpp") if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET mazzGame PROPERTY CXX_STANDARD 20) diff --git a/mazzGame/src/Config.cpp b/mazzGame/src/Config.cpp new file mode 100644 index 0000000..1cfdc5b --- /dev/null +++ b/mazzGame/src/Config.cpp @@ -0,0 +1,25 @@ +#include "Config.h" + +ConfigReader::ConfigReader() +{ +} + +ConfigReader::~ConfigReader() +{ +} + +void ConfigReader::load(std::string& path) +{ +} + +ConfigData::ConfigData() +{ +} + +ConfigData::~ConfigData() +{ +} + +void ConfigData::setSymbol(char wall, char empty, char player, char monster, char trap, char exit) +{ +} diff --git a/mazzGame/src/Config.h b/mazzGame/src/Config.h new file mode 100644 index 0000000..5d549c6 --- /dev/null +++ b/mazzGame/src/Config.h @@ -0,0 +1,37 @@ +#pragma once + +#include + +class ConfigReader +{ +public: + ConfigReader(); + ~ConfigReader(); + + void load(std::string& path); + +private: + +}; + +class ConfigData +{ +public: + ConfigData(); + ~ConfigData(); + + void setSymbol(char wall, char empty, char player, char monster,char trap, char exit); + void getSymbol(char& wall, char& empty, char& player, char& monster, char& trap, char& exit); + + void setDiffculty(int level); + int getDiffculty(); + +private: + + char m_wall, m_empty, m_player, m_monster, m_trap, m_exit; + + int m_monsterAILevel; + +}; + + diff --git a/mazzGame/src/Game.cpp b/mazzGame/src/Game.cpp new file mode 100644 index 0000000..7995317 --- /dev/null +++ b/mazzGame/src/Game.cpp @@ -0,0 +1,14 @@ +#include "Game.h" + +Game::Game() +{ +} + +Game::~Game() +{ +} + +void Game::loadConfig(const std::string& filePath) +{ + +} diff --git a/mazzGame/src/Game.h b/mazzGame/src/Game.h new file mode 100644 index 0000000..896543c --- /dev/null +++ b/mazzGame/src/Game.h @@ -0,0 +1,27 @@ +#pragma once + +#include "Config.h" + +#include + +class Game +{ + +private: + + ConfigReader m_config; + ConfigData m_configData; + + bool m_isRunning = true; + + +public: + Game(); + ~Game(); + + void loadConfig(const std::string& filePath,ConfigData& data); + void initMaze(ConfigData data); + void run(); + +}; + diff --git a/mazzGame/src/Maze.cpp b/mazzGame/src/Maze.cpp new file mode 100644 index 0000000..41064ab --- /dev/null +++ b/mazzGame/src/Maze.cpp @@ -0,0 +1,16 @@ +#include "Maze.h" + +Maze::Maze() + :width(0),height(0) +{ + +} + +Maze::~Maze() +{ +} + +void Maze::setMazeSymbols(char wall, char empty, char player, char monster, char trap, char exit) +{ + +} diff --git a/mazzGame/src/Maze.h b/mazzGame/src/Maze.h new file mode 100644 index 0000000..dbd7920 --- /dev/null +++ b/mazzGame/src/Maze.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +struct Position { + int x, y; + bool operator==(const Position& other) const { + return x == other.x && y == other.y; + } +}; + +// 用于存储字符符号 +struct MazeSymbols { + char wall, empty, player, monster, trap, exit; +}; + +class Maze +{ +public: + Maze(); + ~Maze(); + + void setMazeSymbols(char wall, char empty, char player, char monster, char trap, char exit); + + void generate(int w, int h, const MazeSymbols& sym); + void draw(const Position& playerPos, const std::vector& monsterPos) const; + + bool isWalkable(const Position& p) const; + bool isExit(const Position& p) const; + bool checkTrap(const Position& p) const; + +private: + int m_width, m_height; + std::vector m_grid; +}; diff --git a/mazzGame/src/Monster.cpp b/mazzGame/src/Monster.cpp new file mode 100644 index 0000000..e69de29 diff --git a/mazzGame/src/Monster.h b/mazzGame/src/Monster.h new file mode 100644 index 0000000..73b4b86 --- /dev/null +++ b/mazzGame/src/Monster.h @@ -0,0 +1 @@ +#pragma once diff --git a/mazzGame/src/Player.cpp b/mazzGame/src/Player.cpp new file mode 100644 index 0000000..e69de29 diff --git a/mazzGame/src/Player.h b/mazzGame/src/Player.h new file mode 100644 index 0000000..73b4b86 --- /dev/null +++ b/mazzGame/src/Player.h @@ -0,0 +1 @@ +#pragma once diff --git a/mazzGame/src/cofig.ini b/mazzGame/src/cofig.ini new file mode 100644 index 0000000..2d8e9ac --- /dev/null +++ b/mazzGame/src/cofig.ini @@ -0,0 +1,11 @@ +[Symbols] +Wall = # +Player = @ +Monster = M +Trap = X +Exit = E +Empty = . + +[Difficulty] +# 0: 随机移动,1: BFS偏向,2: A*精确追踪 +MonsterAI = 1 \ No newline at end of file diff --git a/mazzGame/src/main.cpp b/mazzGame/src/main.cpp new file mode 100644 index 0000000..d896855 --- /dev/null +++ b/mazzGame/src/main.cpp @@ -0,0 +1,12 @@ +#include "main.h" + +int main() +{ + std::cout << "Hello CMake." << std::endl; + + Game game; + game.loadConfig("config.txt"); + game.initMaze(); + game.run(); + return 0; +} diff --git a/mazzGame/src/mazzGame.h b/mazzGame/src/main.h similarity index 90% rename from mazzGame/src/mazzGame.h rename to mazzGame/src/main.h index 3de5084..9009b7e 100644 --- a/mazzGame/src/mazzGame.h +++ b/mazzGame/src/main.h @@ -3,6 +3,8 @@ #pragma once +#include "Game.h" + #include // TODO: 在此处引用程序需要的其他标头。 diff --git a/mazzGame/src/mazzGame.cpp b/mazzGame/src/mazzGame.cpp deleted file mode 100644 index 448e418..0000000 --- a/mazzGame/src/mazzGame.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// mazzGame.cpp: 定义应用程序的入口点。 -// - -#include "mazzGame.h" - - - -int main() -{ - std::cout << "Hello CMake." << std::endl; - return 0; -}