diff --git a/Project4/Project4.sln b/Project4/Project4.sln deleted file mode 100644 index f242698..0000000 --- a/Project4/Project4.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29318.209 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Project4", "Project4\Project4.vcxproj", "{88B6082D-DD58-4BA5-B4C0-82CA75B9A262}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Debug|x64.ActiveCfg = Debug|x64 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Debug|x64.Build.0 = Debug|x64 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Debug|x86.ActiveCfg = Debug|Win32 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Debug|x86.Build.0 = Debug|Win32 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Release|x64.ActiveCfg = Release|x64 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Release|x64.Build.0 = Release|x64 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Release|x86.ActiveCfg = Release|Win32 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0B99F3F3-805C-4132-BE71-BAB45C040DDE} - EndGlobalSection -EndGlobal diff --git a/Project4/Project4/bean.cpp b/Project4/Project4/bean.cpp deleted file mode 100644 index bcc8590..0000000 --- a/Project4/Project4/bean.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "bean.h" - -void Bean::ClearBean(int x, int y) -{ -} diff --git a/Project4/Project4/bean.h b/Project4/Project4/bean.h deleted file mode 100644 index cc2cd02..0000000 --- a/Project4/Project4/bean.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "map.h" - -class Bean: public Map -{ -public: - // (xy)ʰȡĶ - void ClearBean(int x, int y); -}; \ No newline at end of file diff --git a/Project4/Project4/define.h b/Project4/Project4/define.h deleted file mode 100644 index eb881d6..0000000 --- a/Project4/Project4/define.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#define MOVER_WIDTH 50 -#define MOVER_HEIGHT 50 - -#define DIR_NONE 0 -#define DIR_UP 1 -#define DIR_DOWN 2 -#define DIR_LEFT 3 -#define DIR_RIGHT 4 - -// ʵʿΪ 28*50 ߶Ϊ 30*50 -#define MAP_WIDTH 28 -#define MAP_HEIGHT 30 - -// ϷĿ -#define GAME_WIDTH 1400 -#define GAME_HEIGHT 1800 - -// չʾ -#define SCORE_X 10 -#define SCORE_Y 1600 diff --git a/Project4/Project4/game.cpp b/Project4/Project4/game.cpp deleted file mode 100644 index adb1ab8..0000000 --- a/Project4/Project4/game.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "game.h" - -Game::Game() -{ -} - -void Game::Load() -{ -} - -void Game::Loop() -{ -} - -char Game::GetKey() -{ - return 0; -} - -void Game::Begin() -{ -} - -void Game::End() -{ -} - -bool Game::PlayerMove(int dir) -{ - return false; -} - -void Game::PlayerGetBean() -{ -} - -void Game::PlayerGetGoldBean() -{ -} - -bool Game::PlayerMeetMonster() -{ - return false; -} - -void Game::MonsterMove() -{ -} - -void Game::MonsterChase() -{ -} - -void Game::MonsterEscape() -{ -} - -void Game::MonsterPhoenix() -{ -} diff --git a/Project4/Project4/game.h b/Project4/Project4/game.h deleted file mode 100644 index 45a9b6b..0000000 --- a/Project4/Project4/game.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once - -// ϵͳ -#include -// Ŀ -#include "define.h" -#include "tool.h" -#include "wall.h" -#include "bean.h" -#include "player.h" -#include "monster.h" - -class Game -{ -private: - Wall wall; - Bean bean, goldBean; - Player p; - Monster m[4]; - -public: - Game(); - - void Load(); - - // Ϸѭ - void Loop(); - - // ȡ - char GetKey(); - - // Ϸʼ˵ - void Begin(); - void End(); - - // p, wall жƶǷǽʵҵƶ - // ƶʧܣײǽ falseΪtrue - bool PlayerMove(int dir); - - // p, beanжƶǷܳԵӣʵҳԶ - void PlayerGetBean(); - - // p, goldBeanжƶǷܳԵӣʵҳԽ - void PlayerGetGoldBean(); - - // p, m[4] жǷݹ״̬ʵҳԹ, - // Եң falseΪtrue - bool PlayerMeetMonster(); - - // p, m[4], wall ʵֹƶ - void MonsterMove(); - - // ƶַʽ - // ׷ - void MonsterChase(); - // ӱ - void MonsterEscape(); - // - void MonsterPhoenix(); - -}; \ No newline at end of file diff --git a/Project4/Project4/map.cpp b/Project4/Project4/map.cpp deleted file mode 100644 index 7f4b417..0000000 --- a/Project4/Project4/map.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "map.h" - -Map::Map() -{ -} - -void Map::SetFrontImg(IMAGE img) -{ -} - -void Map::SetGroundImg(IMAGE img) -{ -} - -void Map::SetMap(int* _map) -{ -} - -bool Map::IsMapTrueArea(int x, int y) -{ - return false; -} - -void Map::DrawAllArea() -{ -} diff --git a/Project4/Project4/map.h b/Project4/Project4/map.h deleted file mode 100644 index f20b7c6..0000000 --- a/Project4/Project4/map.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -// ϵͳ -#include -// Ŀ -#include "define.h" - -class Map -{ -protected: - IMAGE front, ground; // ǰ(true)Ԫͼ(false)Ԫͼ - bool map[MAP_WIDTH][MAP_HEIGHT]; - -public: - Map(); - - void SetFrontImg(IMAGE img); - void SetGroundImg(IMAGE img); - void SetMap(int* _map); - - // жһ߹ڣxyǷmapΪtrue - bool IsMapTrueArea(int x, int y); - - // е - void DrawAllArea(); - -}; \ No newline at end of file diff --git a/Project4/Project4/monster.h b/Project4/Project4/monster.h deleted file mode 100644 index 6232954..0000000 --- a/Project4/Project4/monster.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "mover.h" - -class Monster :public Mover -{ - - -}; \ No newline at end of file diff --git a/Project4/Project4/mover.cpp b/Project4/Project4/mover.cpp deleted file mode 100644 index d781eda..0000000 --- a/Project4/Project4/mover.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "mover.h" - -Mover::Mover() -{ -} - -void Mover::SetImg(IMAGE _img) -{ -} - -void Mover::SetXY(int _x, int _y) -{ -} - -void Mover::SetSpeed(int _speed) -{ -} - -void Mover::Move(int dir) -{ -} - - -void Mover::NextMove(int dir, int& nx, int& ny) -{ -} - -void Mover::Draw() -{ -} - -void Mover::DrawClear() -{ -} diff --git a/Project4/Project4/mover.h b/Project4/Project4/mover.h deleted file mode 100644 index 2525abb..0000000 --- a/Project4/Project4/mover.h +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -// ϵͳ -#include -// Ŀ -#include "define.h" -#include "wall.h" - -class Mover -{ -protected : - IMAGE img; // ͼ - int x, y; // С - int speed; // ƶٶ - -public : - Mover(); - - void SetImg(IMAGE _img); - void SetXY(int _x, int _y); - void SetSpeed(int _speed); - - // dirƶǸdirımover꣬ûпײǽ⣬ - // Ҫײǽgameƶ - // ԼӰҲgameƶ - void Move(int dir); - - // dirƶһε - void NextMove(int dir,int& nx, int& ny); - - void Draw(); // ڵǰ껭Լͼ - void DrawClear(); // ڵǰԼͼ - -}; \ No newline at end of file diff --git a/Project4/Project4/player.cpp b/Project4/Project4/player.cpp deleted file mode 100644 index 9e41fdd..0000000 --- a/Project4/Project4/player.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "player.h" - -void Player::GetBean() -{ -} - -void Player::GetGoldBean() -{ -} - -void Player::GetMonster() -{ -} - -void Player::DrawScore() -{ -} diff --git a/Project4/Project4/player.h b/Project4/Project4/player.h deleted file mode 100644 index 4e45164..0000000 --- a/Project4/Project4/player.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "mover.h" - -class Player : public Mover -{ -private : - int score; - -public : - void GetBean(); - void GetGoldBean(); - void GetMonster(); - - void DrawScore(); -}; \ No newline at end of file diff --git a/Project4/Project4/tool.cpp b/Project4/Project4/tool.cpp deleted file mode 100644 index 346d939..0000000 --- a/Project4/Project4/tool.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "tool.h" - -Wall Tool::ImportWall(int num) -{ - return Wall(); -} - -Bean Tool::ImportBean(int num) -{ - return Bean(); -} - -Player Tool::ImportPlayer(int num) -{ - return Player(); -} - -Monster Tool::ImportMonster(int num) -{ - return Monster(); -} - -string Tool::num2str(int num) -{ - return string(); -} - -int Tool::str2num(string str) -{ - return 0; -} - -char* Tool::str2char(string str) -{ - return nullptr; -} diff --git a/Project4/Project4/tool.h b/Project4/Project4/tool.h deleted file mode 100644 index 4c92d20..0000000 --- a/Project4/Project4/tool.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -// ϵͳ -#include -#include -#include -#include -#include - -using namespace std; - -// Ŀ -#include "define.h" -#include "wall.h" -#include "bean.h" -#include "player.h" -#include "monster.h" - -class Tool -{ -public: - Wall ImportWall(int num); - Bean ImportBean(int num); - Player ImportPlayer(int num); - Monster ImportMonster(int num); - - string num2str(int num); - int str2num(string str); - char* str2char(string str); - -}; \ No newline at end of file diff --git a/Project4/Project4/wall.h b/Project4/Project4/wall.h deleted file mode 100644 index efcb036..0000000 --- a/Project4/Project4/wall.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include "map.h" - -class Wall: public Map -{ - -}; \ No newline at end of file diff --git a/Project4/Project4/Project4.vcxproj b/ProjectFinal1/ProjectFinal1.vcxproj similarity index 94% rename from Project4/Project4/Project4.vcxproj rename to ProjectFinal1/ProjectFinal1.vcxproj index 2286647..1dc54d5 100644 --- a/Project4/Project4/Project4.vcxproj +++ b/ProjectFinal1/ProjectFinal1.vcxproj @@ -20,8 +20,8 @@ 16.0 - {88B6082D-DD58-4BA5-B4C0-82CA75B9A262} - Project4 + {66D5DAC4-F191-466B-9A67-3B11F3C3EDC2} + ProjectFinal1 10.0 @@ -123,24 +123,19 @@ - - + - + - - - - diff --git a/Project4/Project4/Project4.vcxproj.filters b/ProjectFinal1/ProjectFinal1.vcxproj.filters similarity index 77% rename from Project4/Project4/Project4.vcxproj.filters rename to ProjectFinal1/ProjectFinal1.vcxproj.filters index ec3d216..31a9845 100644 --- a/Project4/Project4/Project4.vcxproj.filters +++ b/ProjectFinal1/ProjectFinal1.vcxproj.filters @@ -15,7 +15,7 @@ - + 源文件 @@ -24,16 +24,10 @@ 源文件 - - 源文件 - - - 源文件 - - + 源文件 - + 源文件 @@ -41,22 +35,13 @@ 头文件 - - 头文件 - - - 头文件 - - - 头文件 - 头文件 - + 头文件 - + 头文件 diff --git a/Project4/Project4/Project4.vcxproj.user b/ProjectFinal1/ProjectFinal1.vcxproj.user similarity index 100% rename from Project4/Project4/Project4.vcxproj.user rename to ProjectFinal1/ProjectFinal1.vcxproj.user diff --git a/Project4/Project4/APP.cpp b/ProjectFinal1/app.cpp similarity index 97% rename from Project4/Project4/APP.cpp rename to ProjectFinal1/app.cpp index bc079b9..e43bb55 100644 --- a/Project4/Project4/APP.cpp +++ b/ProjectFinal1/app.cpp @@ -4,6 +4,5 @@ int main() { Game game; game.Load(); - return 0; } \ No newline at end of file diff --git a/ProjectFinal1/define.h b/ProjectFinal1/define.h new file mode 100644 index 0000000..bd678be --- /dev/null +++ b/ProjectFinal1/define.h @@ -0,0 +1,16 @@ +#pragma once + +#define MAP_WIDTH 10 +#define MAP_HEIGHT 10 + +#define DIR_NONE 0 +#define DIR_UP 1 +#define DIR_DOWN 2 +#define DIR_LEFT 3 +#define DIR_RIGHT 4 + +#define MONSTER_CHASE_SPEED 0.2 +#define MONSTER_ESCAPE_SPEED 0.05 +#define MONSTER_ESCAPE_STATUS 100 + +#define MAP_POINT_SIZE 10 diff --git a/ProjectFinal1/game.cpp b/ProjectFinal1/game.cpp new file mode 100644 index 0000000..9515ee2 --- /dev/null +++ b/ProjectFinal1/game.cpp @@ -0,0 +1,66 @@ +#include +#include "game.h" +#include "define.h" + +void Game::Load() +{ + Start(); + End(Loop()); +} + +bool Game::Loop() +{ + char key; + int dir = DIR_NONE, last_dir; + while (1) + { + key = GetKey(); + last_dir = dir; + switch (key) + { + case 'p': Pause(); break; + case 'q': return false; break; + case 'w': dir = DIR_UP; break; + case 's': dir = DIR_DOWN; break; + case 'a': dir = DIR_LEFT; break; + case 'd': dir = DIR_RIGHT; break; + default: dir = last_dir; break; + } + + if (player.PlayerMove(wall, dir)) + { + if (player.TryEatBean(bean)) + { + if (bean.IsEmpty() && goldBean.IsEmpty()) + return true; + } + if (player.TryEatGoldBean(goldBean)) + { + if (bean.IsEmpty() && goldBean.IsEmpty()) + return true; + for (int i = 0; i < 4; i++) + { + monster[i].SetSpeed(MONSTER_ESCAPE_SPEED); + monster[i].SetStatus(MONSTER_ESCAPE_STATUS); + } + } + } + for (int i = 0; i < 4; i++) + { + if (monster[i].TryEatPlayer(player)) + return false; + monster[i].MonsterMove(wall, player, bean, goldBean); + } + } + return false; +} + +char Game::GetKey() +{ + char key = 0; + if (_kbhit()) + { + key = _getch(); + } + return key; +} diff --git a/ProjectFinal1/game.h b/ProjectFinal1/game.h new file mode 100644 index 0000000..1674f0b --- /dev/null +++ b/ProjectFinal1/game.h @@ -0,0 +1,36 @@ +#pragma once + +#include "map.h" +#include "player.h" +#include "monster.h" + +class Game +{ +private: + Map wall, bean, goldBean; + Player player; + Monster monster[4]; + +public: + Game(); + + // Ϸ + void Load(); + +private: + // Ϸʼ + void Start(); + + // ϷʤϷ + void End(bool result); + + // Ϸѭ,trueʤͨأfalseʧ + bool Loop(); + + // Ϸͣ + void Pause(); + + // ȡ + char GetKey(); + +}; \ No newline at end of file diff --git a/ProjectFinal1/map.h b/ProjectFinal1/map.h new file mode 100644 index 0000000..e1fe6aa --- /dev/null +++ b/ProjectFinal1/map.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include "define.h" + +class Map +{ +private: + IMAGE img; + bool map[MAP_WIDTH * MAP_HEIGHT]; + +public: + Map(); + + // mapijֵ + bool GetOnePoint(int x, int y); + + // mapijtrue + void SetOnePoint(int x, int y); + void SetImage(IMAGE _img); + + // mapijfalse + void ClearOnePoint(int x, int y); + + // жϵͼǷе㶼Ϊfalse ǣ򷵻true + bool IsEmpty(); + + // ij + void DrawOnePoint(int x, int y); + + // е + void DrawAllPoint(); +}; \ No newline at end of file diff --git a/ProjectFinal1/monster.cpp b/ProjectFinal1/monster.cpp new file mode 100644 index 0000000..a793b46 --- /dev/null +++ b/ProjectFinal1/monster.cpp @@ -0,0 +1,43 @@ +#include "monster.h" +#include "define.h" + +void Monster::MonsterMove(const Map& wall, Player player, const Map& bean, const Map& goldBean) +{ + int dir; + if (status < 0) + { + dir = WaitingBorn(wall); + } + else if (status > 0) + { + dir = Escape(wall, player); + status--; + } + else + { + dir = Chase(wall, player); + } + + Move(dir); + + // ָ߹beangoldBean + + // .... +} + +int Monster::Escape(const Map& wall, Player player) +{ + int dir = Chase(wall, player); + + // ӱܼ + switch (dir) + { + case DIR_UP: dir = DIR_DOWN; break; + case DIR_DOWN: dir = DIR_UP; break; + case DIR_LEFT: dir = DIR_RIGHT; break; + case DIR_RIGHT: dir = DIR_LEFT; break; + default: dir = DIR_LEFT; break; + } + + return dir; +} diff --git a/ProjectFinal1/monster.h b/ProjectFinal1/monster.h new file mode 100644 index 0000000..c4279e7 --- /dev/null +++ b/ProjectFinal1/monster.h @@ -0,0 +1,33 @@ +#pragma once + +#include "mover.h" +#include "player.h" +#include "map.h" + +class Monster : public Mover +{ +private: + int status; + +public: + Monster(); + + int GetStatus(); + + void SetStatus(int _status); + + // monsterɹplayertrueΪfalseûplayerplayerܣ + bool TryEatPlayer(Player player); + + // ƶʱҪѡʵƶԣҪעָ߹beangoldBean + void MonsterMove(const Map& wall,Player player, const Map& bean, const Map& goldBean); + + // ׷ + int Chase(const Map& wall, Player player); + + // ӱ + int Escape(const Map& wall, Player player); + + // ȴ + int WaitingBorn(const Map& wall); +}; \ No newline at end of file diff --git a/ProjectFinal1/mover.cpp b/ProjectFinal1/mover.cpp new file mode 100644 index 0000000..517f571 --- /dev/null +++ b/ProjectFinal1/mover.cpp @@ -0,0 +1,6 @@ +#include "mover.h" +#include "define.h" + +void Mover::Move(int dir) +{ +} diff --git a/ProjectFinal1/mover.h b/ProjectFinal1/mover.h new file mode 100644 index 0000000..f8d313b --- /dev/null +++ b/ProjectFinal1/mover.h @@ -0,0 +1,34 @@ +#pragma once + +#include + +class Mover +{ +private: + IMAGE img; + double x, y; + double speed; + +public: + Mover(); + + double GetX(); + double GetY(); + double GetSpeed(); + + void SetXY(double _x, double _y); + void SetSpeed(double _speed); + void SetImage(IMAGE _img); + + // moverdirָʾķǰɾ괦ͼ괦ͼ + void Move(int dir); + + // Ԥmoverdirָʾķǰһʱ̵(nx,ny) + void NextXY(int dir, double& nx, double& ny); + + // յǰͼ + void Draw(); + + // յǰͼ + void ClearDraw(); +}; \ No newline at end of file diff --git a/ProjectFinal1/player.cpp b/ProjectFinal1/player.cpp new file mode 100644 index 0000000..157e944 --- /dev/null +++ b/ProjectFinal1/player.cpp @@ -0,0 +1 @@ +#include "player.h" diff --git a/ProjectFinal1/player.h b/ProjectFinal1/player.h new file mode 100644 index 0000000..fddacee --- /dev/null +++ b/ProjectFinal1/player.h @@ -0,0 +1,27 @@ +#pragma once + +#include "mover.h" +#include "map.h" + +class Player : public Mover +{ +private: + int score; + +public: + Player(); + + int GetScore(); + + void SetScore(int _score); + + // wallжǷܰdirָʾķǰܣMove(dir)true򷵻false + bool PlayerMove(const Map& wall, int dir); + + // ݵǰλãжǷܳԵӣܳԵԼĵ÷֣ɾĶӣtrue + bool TryEatBean(Map& bean); + bool TryEatGoldBean(Map& goldBean); + + void DrawScore(); + +}; \ No newline at end of file