以下是我遇到问题的程序部分:
// precondition: board is initialized
// postcondition: board is shuffled by randomly swapping 20 values
void shuffle(int board[][NCOLS]) {
int num = rand();
num = num %6 + 1;
for (int i = 0; i < 20; i++) {
}
}
很确定我已经错了,我想我可能需要rand
函数,但我不确定for
循环是如何工作的。
基本上有6张图片,它们分为4列,这是一个记忆游戏,当时它们停留在同一个地方。我需要做到这一点,以便它们是随机的,并且在你无法看到它们的一侧翻转但是我无法理解它。
我不知道如何随机化列,特别是当它们只是在简单的电路板和NCOLS
的名称下。
答案 0 :(得分:2)
我可以看出为什么这很难 - random_shuffle
更喜欢一维数组,并且你有一个二维数组。幸运的是,由于数组是连续的,这意味着2D数组也可以作为一维数组访问 - 它只是内存中的NCOLS x NROWS
元素:
auto begin = &(board[0][0]);
auto end = begin + NCOLS*NROWS;