Оператор цикла с параметром. Движение

 

1) Перемещение объекта по экрану.

Представим, что экран монитора это ночное небо, а на нем перемещается спутник (белая точка). Напишем фрагменты программы, перемещающие спутник по горизонтали слева направо и справа налево, по вертикали вниз и вверх, по диагоналям в ту и другую стороны. В любом из указанных случаев, фрагмент программы должен реализовать алгоритм:

 

В цикле от начального положения до конечного:

а) рисуем точку;

б) задерживаем;

в) стираем точку, наложив на нее черную;

г) изменяем координаты местоположения точки, на нужный шаг с помощью оператора присваивания или (и) автоматически.

 

 

Фрагменты программ могут выглядеть так:

Вид движения Фрагмент программы Пояснение
    Y=240 FOR X=0 TO 640 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 NEXT X При движении вдоль оси Х изменяется соответствующая координата (автоматически, как параметр), можно добавить шаг, тогда движение будет скачками.
  Y=240 FOR X=640 TO 0 STEP -1 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 NEXT X При движении вдоль оси Х изменяется соответствующая координата (автоматически, как параметр), но в обратном направлении (шаг отрицательный)
    X=320 FOR Y=0 TO 480 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 NEXT Y При движении вдоль оси Y изменяется соответствующая координата (автоматически, как параметр), можно добавить шаг, тогда движение будет скачками.  
    X=320 FOR Y=480 TO 0 STEP -1 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 NEXT Y При движении вдоль оси Y изменяется соответствующая координата (автоматически, как параметр), но в обратном направлении (шаг отрицательный)
    X=0 FOR Y=0 TO 480 STEP 2 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 X=X+3 NEXT Y Так как экран не квадрат, то координату X нужно изменятьри движении вдоль оси хковую четностьрдинаты с большим шагом. При движении по диагонали изменяются обе координаты. По вертикали экран короче, поэтому ось Y удобней изменять автоматически, как параметр, а X – с помощью присваивания.
        X=640 FOR Y=480 TO 0 STEP -2 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 X=X-3 NEXT Y Изменяются обе координаты. Ось Y автоматически, как параметр (шаг отрицательный, т.к. движение к 0), а X – с помощью присваивания (значение координаты тоже стремится к 0).
    X=640 FOR Y=0 TO 480 STEP 2 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 X=X-3 NEXT Y Изменяются обе координаты. Ось Y автоматически, как параметр, а X – с помощью присваивания (значение координаты уменьшается).
    X=0 FOR Y=480 TO 0 STEP - 2 PSET(X,Y),15 FOR W=1 TO 500 NEXT W PSET(X,Y),0 X=X+3 NEXT Y Изменяются обе координаты. Ось Y автоматически, как параметр (шаг отрицательный, т.к. движение к 0), а X – с помощью присваивания (значение координаты увеличивается).

Задание:

Написать программу движения мяча произвольного радиуса, по фиксированной траектории в форме треугольника. Движение осуществляется по часовой стрелке. Треугольник изображать не нужно.

               
             
               
               
             
               

Решение:

Пусть радиус мяча будет вводиться с клавиатуры и храниться в переменной R.

Мяч движется вначале из точки (80,400) до точки (320, 160), затем до точки (560, 400) и возвращается в точку (80,400). Это движение может реализоваться при последовательном использовании трех циклов с параметром. Данные точки будут центрами окружности, изображающей мяч. Стирать мяч будем с помощью черного квадрата, описанного около окружности. В программе будет реализован следующий алгоритм:

1. Вводим значение радиуса;

2. Зафиксируем значение переменной х=80;

3. В цикле с параметром у от 400 до 160 с отрицательным шагом:

а) рисуем мяч;

б) задерживаем;

в) стираем;

г)изменяем координату по оси х с помощью оператора присваивания на величину шага со знаком «+».

4. В цикле с параметром у от 160 до 400 с положительным шагом:

а) рисуем мяч;

б) задерживаем;

в) стираем;

г)изменяем координату по оси х с помощью оператора присваивания на величину шага со знаком «+».

5. В цикле с параметром х от 560 до 80 с отрицательным шагом:

а) рисуем мяч;

б) задерживаем;

в) стираем.

Программа:

CLS

PRINT “введите радиус мяча”

INPUT R

X=80

FOR Y=400 TO 160 STEP -1

CIRCLE(X, Y), R, 4

PAINT(X, Y), 4, 4

FOR W=1 TO 500

NEXT W

LINE(X-R, Y-R)-(X+R, Y+R), 0, BF

X=X+1

NEXT Y

FOR Y=160 TO 400

CIRCLE(X, Y), R, 4

PAINT(X, Y), 4, 4

FOR W=1 TO 500

NEXT W

LINE(X-R, Y-R)-(X+R, Y+R), 0, BF

X=X+1

NEXT Y

FOR X=560 TO 80 STEP -1

CIRCLE(X, Y), R, 4

PAINT(X, Y), 4, 4

FOR W=1 TO 500

NEXT W

LINE(X-R, Y-R)-(X+R, Y+R), 0, BF

NEXT Y

END