Итак, я занимаюсь игра-головоломкой, и у меня возникла проблема. Мой совет будет работать в программе позже. Я хочу сделать копию этого файла, прежде чем он будет скремблирован, чтобы использовать его в win-condition для моей игры. Моя идея состоит в том, чтобы сравнить скопированную доску на скремблированной доске каждый раз, когда пользователь перемещает плитку, чтобы увидеть, были ли они выиграны (выиграны) или нет. Но я немного не уверен, как сделать конструктор копирования для доски. Вот что я сделал (не работает так, как это должно быть).copy constructor [array] C++
Board::Board(int userInput)
{
this->gameSize = userInput;
int zeroPos[2] = { 0, 0 };
SetTileNumbers();
}
void Board::SetTileNumbers()
{
const int sizeOfGame = gameSize; //Size given from user when the board was created.
int tileNumber = 0; //The value given to each Tile.Number.
int row, column;
boardOfTiles = new Tile* [sizeOfGame];
for (int i = 0; i < sizeOfGame; i++)
{
boardOfTiles[i] = new Tile [sizeOfGame]; //The doublepointer is given an additional dimension
}
for (row = 0; row < sizeOfGame; row++)
{
for (column = 0; column < sizeOfGame; column++)
{
boardOfTiles[row][column].number = tileNumber; //Loops that goes through the entirety to instantiate the board of tiles.
tileNumber++;
}
}
}
void Board::SetTileNumbers(const Board& copy)
{
const int sizeOfGame = copy.gameSize;
int row , column;
boardOfTiles = new Tile*[sizeOfGame];
for (int i = 0; i < sizeOfGame; i++)
{
boardOfTiles[i] = new Tile[sizeOfGame];
}
for (row = 0; row < sizeOfGame; row++)
{
for (column = 0; column < sizeOfGame; column++)
{
boardOfTiles[row][column].number = copy.boardOfTiles[row][column].number;
}
}
}
Как он работает не так, как ожидалось? – ZivS
Как насчет использования 'std :: array' и сделать вашу жизнь проще? –
В чем вопрос? Вы отправили код не из конструктора копии. – interjay