Условный переход
Теперь рассмотрим организацию движения точки, которая меняет свое положение на экране и отражается от всех его четырех сторон под углом 45°, как это показано на рис. 1.32.
Рис. 1.32. Движение точки по экрану под углом 45°
SCREEN 9 Х=300: Y=175 ' начальные координаты точки DX=1: DY=1 ' приращение координат X и Y.
Так как мы их сделали положительными, координаты X и Y будут увеличиваться, а, следовательно, точка сначала будет двигаться 1 вправо-вниз под углом 45 градусов 1: PSET (X, Y), 14 вывод точки на экран PSET (X, Y), 0 стирание точки цветом фона IF X=0 OR X=640 THEN DX=-DX в случае достижения точкой 1 вертикальных сторон экрана, приращение по X меняется на противоположное, а значит точка начнет двигаться в обратную по X сторону IF Y=0 OR Y=350 THEN DY=-DY в случае достижения точкой горизонтальных сторон экрана, приращение по Y меняется на противоположное, а значит точка начнет двигаться в обратную по Y сторону X=X+DX: Y=Y+DY изменение координаты точки GOTO 1 переход на метку 1, где происходит рисование точки.
Не забывайте про паузу!
130. Замените в предыдущей программе точку на закрашенную окружность. Получится подобие бильярдного стола. А еще можно сопровождать удар шарика о границу экрана звуковым сигналом веер, который нужно добавить после изменения приращения на противоположное.
131. Усложним задачу. На экране появляется прямоугольник, от которого точка тоже должна отражаться (рис 1.33).
Рис. 1.33. Движение точки по экрану с препятствием
Допустим, координаты углов прямоугольника следующие:
- левый верхний 100, 180;
- правый верхний 300, 180;
- левый нижний 100, 230;
- правый нижний 300, 230.
Тогда, по сравнению с предыдущим примером, к условиям отражения от сторон экрана добавятся еще четыре условия отражения от сторон прямоугольника. Мы приведем два – для верхней и левой сторон, а вы напишите еще два – для нижней и правой.
Для верхней:
IF Y=180 AND 100<Х<300 THEN DY=-DY
То есть если точка достигла горизонтали 180, а по X попала в интервал ] 100; 300[, то изменяем направление движения по Y на противоположное.
Для левой:
IF X=100 AND 180<Y<230 THEN DY=-DY
Рассуждения аналогичны.