Как убедиться, что рандомизированные координаты не попадут в конкретные координаты в 2D-массиве? Язык - C
Я создаю игру на C, и я хочу случайным образом разместить блоки и продукты внутри 2d-массива. Я произвольно распределил координаты x и y блоков и еды в 1d-массивы, то есть 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]);
}
}
}
Примечания: функция перемешивания - это просто базовая функция перемешивания одномерных массивов. Кроме того, foodcount и randdim не имеют отношения к моей проблеме.
Спасибо!