Мне нужно записать условие в while(...)
, где все три фигуры будут перекрываться, а затем использовать в цикле while
попытку найти комбинацию координат для фигуры, которая не будет перекрывать другие фигуры.У меня есть 3 цикла while в коде - каждый для выбора пары координат для конкретной фигуры.
Этот код останавливает программу:
xRing = (int) ((getWidth() - ringSize) * (Math.random()));
yRing = (int) ((getHeight() - ringSize) * (Math.random()));
while( !(
(xSquare + squareSize) < (xRing)
|| (xSquare) > (xRing + ringSize )
|| (ySquare + squareSize) < (yRing)
|| (ySquare) > (yRing + ringSize)
)
||
!(
(xSquare2 + square2Size) < (xRing)
|| (xSquare2) > (xRing + ringSize )
|| (ySquare2 + square2Size) < (yRing)
|| (ySquare2) > (yRing + ringSize)
)
||
!(
(xSquare + squareSize) < (xSquare2)
|| (xSquare) > (ySquare2 + square2Size )
|| (ySquare + squareSize) < (ySquare2)
|| (ySquare) > (ySquare2 + square2Size)
)
){
xRing = (int) ((getWidth() - ringSize) * (Math.random()));
yRing = (int) ((getHeight() - ringSize) * (Math.random()));
}
, и это работает, но позволяет перекрывать Square и Square2:
while( !(
(xSquare + squareSize) < (xRing)
|| (xSquare) > (xRing + ringSize )
|| (ySquare + squareSize) < (yRing)
|| (ySquare) > (yRing + ringSize)
)
||
!(
(xSquare2 + square2Size) < (xRing)
|| (xSquare2) > (xRing + ringSize )
|| (ySquare2 + square2Size) < (yRing)
|| (ySquare2) > (yRing + ringSize)
)
Насколько я понимаю, я должен проверить каждую пару на перекрытие, есть 3 фигуры, 3 возможных перекрытия.Как я уже упоминал ранее, с помощью моей логики кода я могу проверить совпадение 2 пар.Когда я добавляю третью проверку состояния - он не может выйти, пока.Вся логика кажется мне совершенно нормальной.Мой цикл завершится, если он найдет первую координату, где невозможно перекрытие трех фигур.
На самом деле моя короткая версия кода должна выглядеть следующим образом:
while( not(ring NOT overlaps square 1) or
not(ring NOT overlaps square 2) or
not(square 1 NOT overlaps square 2) ) {
...
}
решено: IЯ должен проверять 2 комбинации (НЕ 3) при рисовании каждой фигуры, поэтому для каждого while () у меня должны быть разные условия.