构建记忆游戏。用户可以在他们的"棋盘"上输入他们想发牌的数量。我取输入数(int size)),并创建一个2d对象数组作为游戏板,它存储在构造函数中。我的下一步工作后,这将是取代数组元素与"处理"的卡对象显示。**接收数组的初始化,我很好奇为什么。你有什么建议,为什么或更好的方法来写这个?* *
.cpp文件相关代码
#include <iostream>
#include "GameBoard.h"
#include <math.h>
using namespace std;
GameBoard::GameBoard(int size)
{
if (size % 2 != 0)
{
size++;
}
int row;
int col;
row = 4;
col = ceil(size/4);
Card gameBoard = new Card*[row];
int i;
for(i=0; i<row; i++){
Card gameBoard[i] = new Card[col];
}
. h文件#ifndef GameBoard_h
#define GameBoard_h
#include "Deck.h"
#include <iostream>
using namespace std;
class GameBoard{
private:
Card **gameBoard;
Deck deck;
Card card;
int CardsToDeal;
public:
GameBoard(int size);
GameBoard();
void initializeBoard();
};
#endif
如果在编译时知道大小,则使用std::array
。当你不使用std::vector
时。这些当然可以嵌套,如:
std::array<std::vector<Card>, 4> gameBoard;
如果数字或"行"小的可以在构造函数初始化列表中直接初始化:
GameBoard::GameBoard(int size)
: gameBoard {
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0))
}
{
// Rest of constructor...
}
否则,让数组默认构造,并在循环的构造函数体中设置vector:
GameBoard::GameBoard(int size)
{
int columns = std::ceil(size / 4.0);
for (auto& card_vector : gameBoard)
{
card_vector.resize(columns);
}
// Rest of constructor...
}