gpt4 book ai didi

c++ - 比较两个对象之间的实例。 C++

转载 作者:太空狗 更新时间:2023-10-29 22:58:18 26 4
gpt4 key购买 nike

我目前正在创建一个设计糟糕的 Battleship 游戏,我已经到了一个地步,我无法确切地弄清楚如何从另一个对象访问一些数据。

我有一个棋盘类,它创建两个大小为 100 的数组。我有一个玩家类,它有一个属于他们的两个棋盘的实例(他们的棋盘和敌人的棋盘(命中,未命中,空))

我遇到的麻烦是弄清楚如何让两个玩家板同步,但在板的功能内,内部玩家......

我的功能应该是脱离板的,这样

 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 ...我很困惑,任何帮助将不胜感激。对于这可能造成的任何混淆,我深表歉意。

最佳答案

你可以像下面的方案一样实现

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 使用单例模式

关于c++ - 比较两个对象之间的实例。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41053709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com