我一直在开发一款俄罗斯方块游戏,我必须将一个对象作为参数传递给函数,以便在函数内部使用该对象。
我做了这个函数,它应该能够从Main.cpp控制Board对象更新坐标
void BlockInfo::send(Board board)
{
for (int i = y; i < y + 4; i++)
{
for (int j = x; j < x + 4; j++)
{
if (block[blockType][rotation][j][i])
{
board.setBoard(j, i, true);
}
}
}
}
Main.cpp
Board board;
while (true)
{
Board board;
BlockInfo blcInf;
blcInf.send(board);
board.draw();
}
这应该在终端上画一个俄罗斯方块,但它没有。
所以我试着把send函数改成:
void BlockInfo::send(Board board)
{
board.setBoard(3, 3, true);
}
这应该在控制台(3,3)处绘制一个单独的块,但它没有。假设除了这一切工作正常(我检查了,我很确定),这里的问题是什么?如果您认为这部分没有问题,您认为问题出在哪里?
对于void BlockInfo::send(Board board)
和blcInf.send(board);
,您总是制作board
的副本,并且在send
中修改该副本-但不是来自main
的原始board
。
您需要通过引用传递Board
,而不是通过值。
使用void BlockInfo::send(Board& board)
,您不是在制作副本,而是在制作参考。因此,send
直接处理从main
传入的board
,当您调用draw
时,您将看到更改。