Анимация ( плоский рисунок с движением) - QBasic

Узнай цену своей работы

Формулировка задачи:

Уважаемые! завтра екзамен, помогите с программами анимации, пожалуйста! 1. часы (стрелки должны идти) 2. краник с капающими каплями воды 3. шарик, что падает на стол а потом скачивается с него 4. стакан с пупырышками что поднимаются и исчезают (как в шампанском) цвет обьектов значения не имеет спасибо.

Решение задачи: «Анимация ( плоский рисунок с движением)»

textual
Листинг программы
SCREEN 12
CONST Pi = 3.14159265358#
x0 = 320: y0 = 240: r = 220: rs = 200: rm = 180: rh = 175: DIM c$(12)
DATA XII,I,II,III,IV,V,VI,VII,VIII,IX,X,XI
FOR i = 1 TO 12: READ c$(i): NEXT
CIRCLE (x0, y0), r, 4
FOR s = 0 TO 59
    ax = CINT(x0 - r * COS((Pi / 180) * (6 * s + 90)))
    ay = CINT(y0 - r * SIN((Pi / 180) * (6 * s + 90)))
    ax1 = CINT(x0 - (r - 15) * COS((Pi / 180) * (6 * s + 90)))
    ay1 = CINT(y0 - (r - 15) * SIN((Pi / 180) * (6 * s + 90)))
    ax2 = CINT(x0 - (r - 5) * COS((Pi / 180) * (6 * s + 90)))
    ay2 = CINT(y0 - (r - 5) * SIN((Pi / 180) * (6 * s + 90)))
    IF s MOD 5 = 0 THEN
        LINE (ax, ay)-(ax1, ay1), 5
        LOCATE ay1 / 16, ax1 / 8: PRINT c$((s / 5) + 1)
    ELSE
        LINE (ax, ay)-(ax2, ay2), 5
    END IF
NEXT
WHILE INKEY$ = ""
    a$ = TIME$
    h = VAL(MID$(a$, 1, 2))
    m = VAL(MID$(a$, 4, 2))
    s1 = s: s = VAL(MID$(a$, 7, 2))
    IF s1 <> s THEN
        LINE (x0, y0)-(xs, ys), 0
        LINE (x0, y0)-(xm, ym), 0
        LINE (x0, y0)-(xh, yh), 0
        xs = CINT(x0 - rs * COS((Pi / 180) * (6 * s + 90)))
        ys = CINT(y0 - rs * SIN((Pi / 180) * (6 * s + 90)))
        LINE (x0, y0)-(xs, ys), 4
        xm = CINT(x0 - rm * COS((Pi / 180) * (90 + 6 * m)))
        ym = CINT(y0 - rm * SIN((Pi / 180) * (90 + 6 * m)))
        LINE (x0, y0)-(xm, ym), 15
        xh = CINT(x0 - rh * COS((Pi / 180) * (90 + 6 * ((h MOD 12) * 5 + m \ 12))))
        yh = CINT(y0 - rh * SIN((Pi / 180) * (90 + 6 * ((h MOD 12) * 5 + m \ 12))))
        LINE (x0, y0)-(xh, yh), 1
    END IF
WEND

Объяснение кода листинга программы

  1. Начало работы программы
  2. Определение константы Pi и начальных значений переменных x0, y0, r, rs, rm, rh, c$(12) и DATA XII,I,II,III,IV,V,VI,VII,VIII,IX,X,XI
  3. Цикл FOR для чтения данных из файла c$(i) и построения круга с центром в (x0, y0) и радиусом r
  4. Цикл FOR для анимации, который выполняется 60 раз (для одного полного оборота)
  5. Вычисление координат точек ax, ay, ax1, ay1, ax2, ay2 для текущего угла в диапазоне от 0 до 360 градусов
  6. Проверка условия s MOD 5 = 0, которое выполняется при каждом пятом шаге (т.е. при 0, 5, 10, 15, ..., 60)
  7. Если условие выполняется, то строятся линии между точками ax, ay и ax1, ay1, а также выводится значение переменной c$((s / 5) + 1)
  8. Если условие не выполняется, то строятся линии между точками ax, ay и ax2, ay2
  9. Цикл WHILE INKEY$ = `` для обработки нажатий клавиш и обновления значений переменных s, rs, rm, rh при каждом нажатии клавиши
  10. Вычисление текущего времени и разделение его на часы, минуты и секунды для обновления значений переменных h, m, s1, s
  11. Если s1 не равно s, то это означает, что время изменилось, и требуется обновить значения переменных xs, ys, xm, ym, xh, yh
  12. Обновление значений переменных xs, ys, xm, ym, xh, yh на основе новых значений h, m, s
  13. Построение линий между точками (x0, y0) и (xs, ys), (x0, y0) и (xm, ym), (x0, y0) и (xh, yh) с помощью функции LINE
  14. Вывод значения переменной a$ (текущего времени) в момент нажатия клавиши
  15. Завершение цикла WHILE и возврат в начало программы
  16. Конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.733 из 5