Я знаю, что это старый вопрос, но я думаю, что этот пункт все еще может быть актуальным.
Если вы используете клавишный ввод для перемещения символа или изменения значения, вы почти всегда лучшевыкл. избегая if-then-else
операторов.
Самый быстрый способ, как правило, заключается в том, чтобы сделать что-то вроде этого:
:getkey -> A
:X+(A=24) -> X
:X-(A=26) -> X
:Y+(A=25) -> Y
:Y-(A=34) -> Y
, который может быть далее сжат до:
:getkey -> A
:X+(A=24)-(A=26) -> X
:Y+(A=25)-(A=34) -> Y
при работе с логикой с помощью операторов if
мы используем тот факт, что (A=24)
имеет логическое (0 или 1) значение.Таким образом, мы добавляем или вычитаем 1, если это определенное значение.
Установка пределов также довольно проста:
:getkey -> A
:X+(A=26)(X<=20)-(A=24)(X>0) -> X
:Y+(A=25)(Y<=15)-(A=34)(Y>=3) -> Y
Так что, если (X<20)
, он умножится на 1, но когда X>= 20, (X<20)
умножится на 0, отрицая инкримент.
Я использую другую технику, чтобы помочь с выбором значений в некоторых из моих программ: левая и правая клавиши увеличивают и уменьшают переменную на другое значениечем клавиши вверх и вниз.Однако для этого требуется дополнительная логика.
:getkey -> A
:X+10(A=26)(X+10<=100)-10(A=24)(X-10>=0) -> X
:Y+(A=25)(Y<15)-(A=34)(Y>3) -> B
В этом случае стрелки влево и вправо идут на десятки, а стрелки вверх и вниз - на единицы.(X+10<=100)
используется вместо (X<100)
, потому что последнее будет истинно, если X=99
, так что X может возрасти до 109. Первое гарантирует, что добавление десяти не превысит ограничение.