algorithminterface.cpp
来自「巫魔问题求解」· C++ 代码 · 共 128 行
CPP
128 行
#include "AlgorithmInterface.h"
#include "WorldModel.h"
#include "Explorer.h"
#include "GameEngine.h"
#include "ServerMap.h"
using namespace _server;
using namespace _base;
//////////////////////////////////////
AlgorithmInterface::AlgorithmInterface(GameEngine &ge)
: m_rGameEngine(ge)
{
this->mpClientToServer = new ClientToServer();
this->mpServerToClient = new ServerToClient();
this->mpClientToServer->mpAlgorithmInterface = this;
}
//////////////////////////////////////
AlgorithmInterface::AlgorithmInterface(const _server::AlgorithmInterface &from)
: m_rGameEngine(from.m_rGameEngine)
{
}
//////////////////////////////////////
AlgorithmInterface::~AlgorithmInterface(void)
{
delete this->mpClientToServer;
delete this->mpServerToClient;
}
//////////////////////////////////////
void AlgorithmInterface::Update(void)
{
ServerToClient & servertoclient = TheServerToClient();
GameEngine & gameengine = m_rGameEngine;
WorldModel & worldmodel = gameengine.TheWorldModel();
ServerMap & servermap = worldmodel.TheServerMap();
Explorer & explorer = worldmodel.TheExplorer();
Cell & cell = servermap.TheCell(explorer.GetX(), explorer.GetY());
servertoclient.Reset();
servertoclient.mDirection = explorer.GetDirection();
servertoclient.mIsBreeze = ((cell.GetType() & Cell::CT_Breeze) != 0);
servertoclient.mIsBump = worldmodel.IsBump();
servertoclient.mIsGleam = ((cell.GetType() & Cell::CT_Gleam) != 0);
servertoclient.mIsHowl = worldmodel.IsHawl();
servertoclient.mIsStench = ((cell.GetType() & Cell::CT_Stench) != 0);
servertoclient.mPositionX = explorer.GetX();
servertoclient.mPositionY = explorer.GetY();
servertoclient.mShootsLeft = explorer.GetShootsLeft();
servertoclient.mIsReset = worldmodel.IsNewlyCreated();
}
//////////////////////////////////////
GameEngine & AlgorithmInterface::TheGameEngine(void)
{
return m_rGameEngine;
}
//////////////////////////////////////
AlgorithmInterface::ServerToClient &AlgorithmInterface::TheServerToClient(void)
{
return *mpServerToClient;
}
//////////////////////////////////////
AlgorithmInterface::ClientToServer &AlgorithmInterface::TheClientToServer(void)
{
return *mpClientToServer;
}
//////////////////////////////////////
AlgorithmInterface::ServerToClient::ServerToClient(void)
{
memset(this, 0, sizeof(*this));
}
//////////////////////////////////////
void AlgorithmInterface::ServerToClient::Reset(void)
{
memset(this, 0, sizeof(*this));
}
//////////////////////////////////////
AlgorithmInterface::ClientToServer::ClientToServer(void)
{
memset(this, 0, sizeof(*this));
}
//////////////////////////////////////
bool AlgorithmInterface::ClientToServer::Escape(void)
{
this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel()._su_IsNewlyCreated() = false;
return this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel().TheExplorer().Escape();
}
//////////////////////////////////////
bool AlgorithmInterface::ClientToServer::Shoot(void)
{
this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel()._su_IsNewlyCreated() = false;
return this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel().TheExplorer().Shoot();
}
//////////////////////////////////////
bool AlgorithmInterface::ClientToServer::TurnLeft(void)
{
this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel()._su_IsNewlyCreated() = false;
return this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel().TheExplorer().TurnLeft();
}
//////////////////////////////////////
bool AlgorithmInterface::ClientToServer::TurnRight(void)
{
this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel()._su_IsNewlyCreated() = false;
return this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel().TheExplorer().TurnRight();
}
//////////////////////////////////////
bool AlgorithmInterface::ClientToServer::GoAhead(void)
{
this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel()._su_IsNewlyCreated() = false;
return this->mpAlgorithmInterface->m_rGameEngine.TheWorldModel().TheExplorer().GoAhead();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?