1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Yongi-RPG

Клонировать/Скачать
GameMap.cpp 7.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
永义 Отправлено 01.11.2018 04:20 0c4db85
#include "stdafx.h"
#include "GameMap.h"
CGameMap::CGameMap()
{
m_pCurMap = new sMapDt;
m_pCurMap = CDataMgr::GetDataMgr()->GetMapDtMgr()->GetDataByID(1001);
m_pPlayer = new CPlayer();
m_pPlayer->InitPos(m_pCurMap->iInitRow, m_pCurMap->iInitCol);
m_pNpcMgr = new CNpcMgr();
m_pNpcMgr->UpData(m_pCurMap->iID);
m_pMonsterMgr = new CMonsterMgr();
m_pMonsterMgr->UpData(m_pCurMap->iID);
}
CGameMap::~CGameMap()
{
//SAFE_DEL(m_pCurMap);
//SAFE_DEL(m_pPlayer);
SAFE_DEL(m_pNpcMgr);
SAFE_DEL(m_pMonsterMgr);
}
void CGameMap::UpData()
{
//进入退出选项框
if (KEY_DOWN(VK_ESCAPE))
{
CEnd* End = new CEnd();
CGameMgr::GetInstance()->ChangeWnd(End);
}
//进入背包
else if (KEY_DOWN(VK_TAB))
{
CBag* Bag =new CBag();
//Bag->SetVecBag(m_pPlayer->GetBag()->GetVecBag());
CGameMgr::GetInstance()->ChangeWnd(Bag);
}
//进入任务
else if (KEY_DOWN(VK_F1))
{
CMyTask* MyTask = new CMyTask();
CGameMgr::GetInstance()->ChangeWnd(MyTask);
}
//玩家备份与移动
m_pPlayer->BackUp();
m_pPlayer->Move();
//判断玩家撞墙
if (E_MAP_WALL == m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()])
{
m_pPlayer->Restore();
}
//更换地图
if (1001 <= m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()])
{
//第一个地图第一个传送门-贪吃蛇小游戏
if (1005 == m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()])
{
m_pPlayer->Restore();
CSnake* Snake = new CSnake();
CGameMgr::GetInstance()->ChangeWnd(Snake);
}
//第一个地图第一个传送门-推箱子小游戏
else if (1006 == m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()])
{
m_pPlayer->Restore();
CPushBox* PushBox = new CPushBox();
CGameMgr::GetInstance()->ChangeWnd(PushBox);
}
//第一个地图第一个传送门-飞机大战小游戏
else if (1007 == m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()])
{
m_pPlayer->Restore();
CPlaneWar* PlaneWar = new CPlaneWar();
CGameMgr::GetInstance()->ChangeWnd(PlaneWar);
}
//切换地图
else
{
m_pCurMap = CDataMgr::GetDataMgr()->GetMapDtMgr()->GetDataByID(m_pCurMap->arrMap[m_pPlayer->GetRow()][m_pPlayer->GetCol()]);
m_pNpcMgr->UpData(m_pCurMap->iID);
m_pPlayer->InitPos(m_pCurMap->iInitRow, m_pCurMap->iInitCol);
m_pMonsterMgr->ClearVecMonster();
}
}
//怪物更新
m_pMonsterMgr->UpData(m_pCurMap->iID);
//人碰到npc
CNpc* Npc = m_pNpcMgr->FindNpc(m_pPlayer->GetRow(), m_pPlayer->GetCol());
if (nullptr != Npc)
{
//将人还原
m_pPlayer->Restore();
//进入对话框
COption* Option = new COption();
//将数据传入对话框,方便后续传输
Option->AcceptData(m_pPlayer, Npc->GetNpc()->iID, Npc->GetNpc()->iInitCol,Npc->GetNpc()->iInitRow );
//跳转
CGameMgr::GetInstance()->ChangeWnd(Option);
}
//人碰到怪物
CMonster* pMonster = m_pMonsterMgr->FindMonster(m_pPlayer->GetRow(), m_pPlayer->GetCol());
int iNowMonsterPos = m_pMonsterMgr->GetMonsterPos(m_pPlayer->GetRow(), m_pPlayer->GetCol());
if(nullptr!= pMonster)
{
//将人还原
m_pPlayer->Restore();
//进入对话框
CFighting* Fight = new CFighting();
//数据传入
Fight->SetMonster(iNowMonsterPos,m_pPlayer);
//跳转
CGameMgr::GetInstance()->ChangeWnd(Fight);
}
}
void CGameMap::OnRender()
{
for (int i = 0; i < m_pCurMap->iRowSize; i++)
{
for (int j = 0; j < m_pCurMap->iColSize; j++)
{
//找到NPC
CNpc* Npc = m_pNpcMgr->FindNpc(i, j);
//找到怪物
CMonster* Monster = m_pMonsterMgr->FindMonster(i, j);
if (E_MAP_WALL==m_pCurMap->arrMap[i][j])
{
cout << "■";
}
else if (5 == i && 34 == j&& 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout << "阿";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (5 == i && 35 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout << "拉";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (5 == i && 36 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);
cout << "德";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (34 == i && 58 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
cout << "新";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (35 == i && 58 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
cout << "手";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (36 == i && 58 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
cout << "村";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (37 == i && 58 == j && 1002 == m_pCurMap->iID)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
cout << "↓";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (1000 < m_pCurMap->arrMap[i][j])
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |FOREGROUND_BLUE);
cout << "※";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (i == m_pPlayer->GetRow() && j == m_pPlayer->GetCol())
{
if (E_MAP_WATER == m_pCurMap->arrMap[i][j])
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
cout << "♂";
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
cout << "♀";
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (E_MAP_TREE == m_pCurMap->arrMap[i][j])
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);//设置绿色
cout << "※";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
else if (E_MAP_WATER == m_pCurMap->arrMap[i][j])
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
cout << "≈";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
//显示怪物
else if (nullptr != Monster)
{
Monster->OnRender();
}
//显示NPC
else if (Npc != nullptr)
{
cout << Npc->GetNpc()->szPic;
}
else
{
cout << " ";
}
}
if (1 == i)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |
FOREGROUND_BLUE);
cout << "\t " << m_pCurMap->szName;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
if (3 == i)
{
cout << "\t" <<"坐标:"<< m_pPlayer->GetRow()<<"\t"<<m_pPlayer->GetCol();
}
cout << endl;
}
}
void CGameMap::gotoxy(short x, short y)
{
COORD position = { x, y };
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, position);
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Yongi-RPG.git
git@api.gitlife.ru:oschina-mirror/Yongi-RPG.git
oschina-mirror
Yongi-RPG
Yongi-RPG
master