0

我正在用 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 与我的问题无关。

谢谢!

4

0 回答 0