7 сентября 2012 в 17:22
Blitz3d - Условия, бесконечные циклы, опрос клавиатуры
В дальнейшем в спецкурсе условия понадобятся только для организации опроса клавиатуры, т. е. выполнения каких – либо действий при нажатии определенных клавиш. Но, будет нелишне дать определение условий и разъяснить принцип действия структуры условия.
Условие IF-THEN-ELSE-END IF
Условия - это выражения, которые бывают ЛОЖНЫМИ или ИСТИННЫМИ.
В условиях можно использовать следующие знаки: равно (=), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (<>)
Условие A = B ИСТИННО, когда A равно B и ЛОЖНО в других случаях
Условие A > B ИСТИННО, когда A больше B и ЛОЖНО в других случаях
И т. д.
Строки могут быть равными или не равными (учитывается регистр букв).
Примеры ИСТИННЫХ условий:
1 = 1, 5 > 3, 2 <= 2, 1 <= 2, 65 <> 22, “Лес” = ”Лес”, “Горы” <> “Лес”, “Машина” <> ”МаШиНа” (*)
Примеры ЛОЖНЫХ условий:
10 = 11, 51 < 3, 25 >= 20, 0 <> 0, “Стоп” = ”Стоп!”, “Вода” = ”вода”, “Огонь” <> “Огонь” (*)
Синтаксис условия IF-THEN:
IF условие THEN …. эти операторы выполняются, когда условие ИСТИННО …. ELSE …. эти операторы выполняются, когда условие ЛОЖНО …. END IF
Примеры:
Принцип действия этих примеров стоит разъяснить дословно.
IF Power > 10 THEN (*) PRINT “Перегрузка!” ELSE PRINT “Все в порядке!” END IF
Можно записать и так:
IF Power > 10 THEN PRINT “Перегрузка!” ELSE PRINT “Все в порядке!” (*)
ELSE можно и не включать:
IF Points >= 5 THEN PRINT “Великолепно!” (*)
Программа, проверяющая пароль
Password$ = INPUT$(“Введите пароль:”) IF Password$ = ”12345” THEN PRINT “Пароль правильный!” PRINT “Добро пожаловать в систему!” ELSE PRINT “Пароль неправильный. Вход воспрещен.” END IF WAITKEY
Программа, проверяющая, больше ли пятидесяти введенное число
A = INPUT$(“Введите число:”) IF A > 50 THEN PRINT “Число больше 50” ELSE PRINT “Число не больше 50” END IF WAITKEY
Бесконечные циклы
Цикл, выполняющийся бесконечно много раз легко организовать с помощью команд REPEAT-FOREVER:
REPEAT PRINT “Это будет повторяться бесконечно!” FOREVER
Циклы этого типа понадобятся в дальнейшем для осуществления бесконечного повторения опроса клавиатуры и визуализации трехмерной сцены в соответствии с изменениями параметров трехмерных объектов.
Остановка программы
Как же теперь остановить программу? Для этого нужно нажать на кнопку с крестом в правом верхнем углу окна.
Команда EXIT
Выходом из этого цикла (и из других тоже) служит команда EXIT:
Данная команда в дальнейшем будет использоваться для осуществления выхода из бесконечного цикла и завершения программы при нажатии клавиши "Esc".
Пример:
A = 1 REPEAT A = A * 2 PRINT A IF A > 500 THEN PRINT “Слишком много!” EXIT END IF FOREVER WAITKEY
Управление камерой с клавиатуры
Следующее условие ИСТИННО в том случае, если в данный момент нажата определенная клавиша и ЛОЖНО, если она не нажата.
IF KEYGET (scancode) THEN
Каждая клавиша на клавиатуре имеет скан-код (scancode). В таблице по адресу Help \ Command Reference \ Scancodes приведены скан-коды для каждой клавиши. Скан-коды часто используемых клавиш приведены в памятке.
Теперь сделаем управление камерой с клавиатуры для программы "fir" - для этого мы должны создать бесконечный цикл (чтобы компьютер вновь и вновь опрашивал клавиатуру) и поместить внутри него команды поворота камеры. При этом мы должны периодически осуществлять визуализацию. Также, добавим условие для выхода из программы при нажатии клавиши ESC. Итак, заменим строки:
RENDERWORLD FLIP WAITKEY
на следующие:
Задаем начальные значения углов: xa = 0 ya = 0 REPEAT Меняем угол поворота вокруг оси OX: IF KEYDOWN(200) THEN xa = xa + 1; вверх IF KEYDOWN(208) THEN xa = xa - 1; вниз Меняем угол поворота вокруг оси OY: IF KEYDOWN(203) THEN ya = ya + 1; влево IF KEYDOWN(205) THEN ya = ya - 1; вправо Устанавливаем углы поворота камеры: ROTATEENTITY cam, xa, ya, 0 Выход по нажатию клавиши ESC: IF KEYDOWN(1) THEN EXIT; ESC - выход Визуализируем трехмерный мир: RENDERWORLD FLIP FOREVER
Запишем эту программу под именем “fir2”.
комментарии отсутствуют
авторизуйтесь