我正在使用5x5 2D阵列制作简化的扫雷游戏。我的部分教导是制作这样的函数:
此函数采用1到25之间的值,并将值转换为行列位置。您需要使用参考参数来完成此任务。
我该如何做到这一点?
到目前为止,这是我的代码:
int main()
{
int input;
char array[5][5];
initBoard(array, 5);
populateBombs(array, 5);
cout << "Enter a value between 1 and 25 to check a space " << endl;
cin >> input;
printBoard(array, 5);
cout << endl;
return 0;
}
void initBoard(char ar[][5], int size)
{
for (int row = 0; row < 5; row++)
{
for (int col = 0; col < size; col++)
{
ar[row][col] = 'O';
}
}
}
void printBoard(const char ar[][5], int size)
{
for (int row = 0; row < size; row++)
{
for (int col = 0; col < 5; col++)
{
cout << ar[row][col] << "\t";
}
cout << endl;
}
}
问题的第二部分是创建一个&#34; populateBomb&#34;功能,我需要用炸弹随机填充5个空格。我必须使用&#39; *&#39;代表炸弹的角色。我可以用什么技巧来解决这些问题?
答案 0 :(得分:0)
您可以使用除法和模operators轻松地将索引转换为列和行。
// Take an index between 1 and 25 and return 0 based column and rows.
// If you need 1 based column and rows add 1 to column and row
void getPosition(int index, int& column, int& row)
{
row = (index - 1) / 5;
column = (index - 1) % 5;
}
要选择随机列和行,请使用std::rand
。
void getRandomPosition(int index, int& column, int& row)
{
getPosition(std::rand() % 25, column, row);
}
答案 1 :(得分:0)
你说:
此函数采用1到25之间的值,并将值转换为行列位置。您需要使用参考参数来完成此任务。
函数签名应如下所示:
int foo(int in, int& row, int& col);
从描述中不清楚row
和col
是否需要介于1
到5
之间或0
和{{}之间1}}。显而易见的是,实现将根据预期的输出而有所不同。