Как остановить пошагово движущийся прямоугольник в точке, не делящей Le с приращением? - PullRequest
0 голосов
/ 06 мая 2018

У меня есть ситуация, когда у меня есть прямоугольник, который перемещается с шагом 25 пикселей. Мне нужно остановить прямоугольник, когда его позиция x равна 740. 740 не делится на 25, поэтому x pos никогда не упадет на 740. Это приращение 25 также является динамическим и может быть от 25 до 100. Вопрос не зависит от языка.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Возможно реализовать проверку перед увеличением значения переменной.

    IF currentXpos + increment < 740 THEN
       currentXpos = currentXpos + increment;
    END_IF

Если вы хотите, чтобы позиция была по крайней мере 740, просто используйте

    IF currentXpos < 740 THEN
       currentXpos = currentXpos + increment;
    END_IF
0 голосов
/ 10 мая 2018

Учитывая, что есть вероятность, что позиция 740 может быть не достигнута, а только приблизительно +/- с шагом, вы должны принять это во внимание.

Итак, тест может быть:

if (x >= 740-increment div 2) and (x <= 740+increment div 2) then... (got)

Конечно, это работает, если вы знаете приращение. Если нет, вы должны использовать максимально возможный прирост.

Другой способ, более длинный, но, возможно, более понятный:

if x < 740 then if x+increment >= 740 then... (got)
if x > 740 then if x-increment <= 740 then... (got)

Попробуйте сравнить два метода ... и получайте удовольствие!

...