我目前正在创建一个设计糟糕的战舰游戏,我已经到达了一个地方,我无法弄清楚如何从另一个对象访问一些数据。
我有一个棋盘类,它创建了两个大小为100的数组。我有一个玩家类,其中有两个属于他们的板的实例(他们的棋盘和敌人棋盘(命中,小姐,空))< / p>
我正在做的事情是,弄清楚如何让两个玩家的棋盘同步,但是在棋盘内部,内部球员......
我认为我的功能是不受欢迎的
class Board{
int playerBoard[100];
int enemyBoard[100];
int makeMove(Move)
{
// compare player1.enemyBoard to player2.playerBoard (THIS ??)
};
class Player{
Board playerBoards;
void makeMove() // edit, the makeMove() in players, cant have parameters
{
playerBoards.makeMove(Move x){...};
};
}
Player player1;
Player player2;
player1.makeMove(Move x);
但是如何在player1.boards的功能内部进入player2 ... 我很困惑,任何帮助将不胜感激。我很抱歉这可能导致任何混乱。
答案 0 :(得分:2)
您可以像以下解决方案一样实现
class Board{
private:
int player1Board[100];
int player2Board[100];
public:
int* getPlayerBoard(int playerID){
if (playerID == 1)
return &player1Board;
else if (playerID == 2)
return &player2Board;
else
return nullptr;
}
int makeMove(Move,int playerID)
{
if(playerID == 1){
//update player1Board
}
elseif (playerID == 2){
//update player2Board
}
};
class Player{
private:
Board* playerBoards;
int playerID;
public:
Player(int _playerID, Board* _playerBoards){
playerID = _playerID;
playerBoards = _playerBoards;
}
void makeMove() // edit, the makeMove() in players, cant have parameters
{
playerBoards->makeMove(Move x,playerID){...};
};
}
Board playerBoards;
Player player1(1,&playerBoards);
Player player2(2,&playerBoards);
player1.makeMove(Move x);
要进一步改善它,您也可以在Board类中使用单例模式