Сегодня научим прямоугольник отскакивать от стен. Для этого нам понадобится код, который будет срабатывать при определённых условиях.
if - если
Для этого используется команда if, в переводе на русский - если.
После команды if ставится выражение и если оно верно, то выполнится код, идущий следом и заключенный в фигурные скобки.
if else - если иначе
Второй вариант этой команды. Если выражение верно (true), то выполнится код , идущий следом и заключенный в фигурные скобки, если выражение неверно (false), то выполнится код в фигурных скобках, идущий после команды else.
А теперь рассмотрим, какие выражения выдают правда/ложь (true/false)
- a != b a не равно b
- a == b a равно b , (два символа равно)
- a > b a больше b
- a >= b a больше или равно b
- a < b a меньше b
- a <= b a меньше или равно b
В качестве того, что сравнивается, могут использоваться переменные, непосредственные численные значения, функции, выдающие результат на выходе, константы.
Пример:
if a == b
{ Код в этом месте выполняется, если a равно b }
else
{ Код в этом месте выполняется, если a не равно b }
На самом деле все эти выражения выдают 1 - для true и 0 - для false.
То есть можно записать так:
if 1 { код здесь всегда будет выполняться }
if 0 { код здесь никогда не выполнится }
Есть ещё две команды, которые помогают объединить несколько сравнений.
- || Логическая операция ИЛИ (OR)
- && Логическая операция И (AND)
Пример:
if x == 4 && y == 2
{ Код в этом месте выполняется, если x равно 4 и y равно 2 }
if x == 4 || y == 2
{ Код в этом месте выполняется, если x равно 4 или y равно 2 }
То есть в первом случае нужно, что бы оба выражения были верны.
Во втором случае нужно, что бы хотя бы одно выражение было верно.
Ну а теперь пишем код.
В строчках 4 и 5 я добавил две новых переменных Xspeed и Yspeed , которые содержат значение скорости (speed) по оси X и Y.
Теперь в строках 11 и 12 к значению переменных Xcoord и Ycoord с координатами прямоугольника я добавил не 1, как в прошлый раз, а значение переменных Xspeed и Yspeed.
В строке 15 я проверяю, была ли достигнута граница красного прямоугольника по горизонтали.
Вертикальные границы находятся по X-координатам -130 и 130. Так как я не хочу, что бы мы наехали на границу, я проверяю, не достигли ли мы по оси Х значения -129 и меньше, с левой стороны.
Xcoord <= -129
Так как координата прямоугольника - это левый верхний угол, а ширина прямоугольника 20 пиксель, то с правой стороны я проверяю не стала ли координата равна или больше, чем 109. (129-20)
Xcoord >= 109
Если хоть одно из этих проверок подтвердится, я меняю знак скорости.
Для этого я использую логическую операцию ИЛИ (OR)
( Xcoord <= -129 ) || ( Xcoord >= 109 )
На 19 строке я проверяю не достигли ли мы верхней и нижней границы.
Сохраняем файл, открываем Pixilang и запускаем полученный скрипт.
Получаем вот такую картину.
Здесь, вместо закрашивания старого положения прямоугольника чёрным, я использовал тёмно-коричневый, что бы видно было след от движения прямоугольника.
Ну и напоследок заставим прямоугольник отскакивать от границы окна.
В Pixilang есть такие встроенные глобальные переменные, как
- WINDOW_XSIZE - ширина пользовательского окна (в пикселях);
- WINDOW_YSIZE - высота пользовательского окна (в пикселях);
В них заносится размер экрана при запуске приложения. Их значениями я и воспользуюсь для нахождение крайних координат. Напомню, что точка с координатами ( X=0, Y=0 ) находится по центру экрана, а координата бегающего прямоугольника определяется по верхнему левому углу прямоугольника.
Сохраняем файл, открываем Pixilang и запускаем полученный скрипт. Получаем вот такую картину.
На сегодня всё. Рекомендую посетить страничку WarmPlace с описанием от автора языка.
На следующем уроке разберём генерацию случайных чисел и массивы (контейнеры), это позволит запускать по экрану десятки прямоугольников.