我正在用 C 语言创建一个游戏,我想在二维数组中随机放置块和食物。我已将块和食物的 x 和 y 坐标随机化为一维数组,即 foodCol[] 和 foodRow[];blockCol[] 和 blockRow[]。但是,有可能块和食物会落入相同的坐标。我还希望它们不要放在坐标 (1, 1) 上并且彼此并排,除了对角线。我想出了这段代码,但它不起作用,也许还有其他直观的方法。
这是代码:
for (foodCount = 0; foodCount < randDim; foodCount++){
for (foodCount2 = 0; foodCount2 < randDim; foodCount2++){
while ((foodCol[foodCount] == blockCol[foodCount2] && foodRow[foodCount] == blockRow[foodCount2]) ||
(foodCol[foodCount] == blockCol[foodCount2]+1 && foodRow[foodCount] == blockRow[foodCount2]) ||
(foodCol[foodCount] == blockCol[foodCount2]-1 && foodRow[foodCount] == blockRow[foodCount2]) ||
(foodCol[foodCount] == blockCol[foodCount2] && foodRow[foodCount] == blockRow[foodCount2]+1) ||
(foodCol[foodCount] == blockCol[foodCount2] && foodRow[foodCount] == blockRow[foodCount2]-1) ||
(foodRow[foodCount] == 1 && foodCol[foodCount] == 1) ||
(foodRow[foodCount] == 2 && foodCol[foodCount] == 1) ||
(foodRow[foodCount] == 1 && foodCol[foodCount] == 2) ||
(foodRow[foodCount] == 2 && foodCol[foodCount] == 2)){
foodNum2 = (rand()%9)+1;
shuffle(&foodCol[foodCount2], &foodCol[foodNum2]);
shuffle(&foodRow[foodCount2], &foodRow[foodNum2]);
}
}
}
备注:shuffle 函数只是 shuffle 1d 数组的一个基本函数。此外, foodcount 和 randdim 与我的问题无关。
谢谢!