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

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

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

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

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

textual
Листинг программы
  1. SCREEN 12
  2. CONST Pi = 3.14159265358#
  3. x0 = 320: y0 = 240: r = 220: rs = 200: rm = 180: rh = 175: DIM c$(12)
  4. DATA XII,I,II,III,IV,V,VI,VII,VIII,IX,X,XI
  5. FOR i = 1 TO 12: READ c$(i): NEXT
  6. CIRCLE (x0, y0), r, 4
  7. FOR s = 0 TO 59
  8.     ax = CINT(x0 - r * COS((Pi / 180) * (6 * s + 90)))
  9.     ay = CINT(y0 - r * SIN((Pi / 180) * (6 * s + 90)))
  10.     ax1 = CINT(x0 - (r - 15) * COS((Pi / 180) * (6 * s + 90)))
  11.     ay1 = CINT(y0 - (r - 15) * SIN((Pi / 180) * (6 * s + 90)))
  12.     ax2 = CINT(x0 - (r - 5) * COS((Pi / 180) * (6 * s + 90)))
  13.     ay2 = CINT(y0 - (r - 5) * SIN((Pi / 180) * (6 * s + 90)))
  14.     IF s MOD 5 = 0 THEN
  15.         LINE (ax, ay)-(ax1, ay1), 5
  16.         LOCATE ay1 / 16, ax1 / 8: PRINT c$((s / 5) + 1)
  17.     ELSE
  18.         LINE (ax, ay)-(ax2, ay2), 5
  19.     END IF
  20. NEXT
  21. WHILE INKEY$ = ""
  22.     a$ = TIME$
  23.     h = VAL(MID$(a$, 1, 2))
  24.     m = VAL(MID$(a$, 4, 2))
  25.     s1 = s: s = VAL(MID$(a$, 7, 2))
  26.     IF s1 <> s THEN
  27.         LINE (x0, y0)-(xs, ys), 0
  28.         LINE (x0, y0)-(xm, ym), 0
  29.         LINE (x0, y0)-(xh, yh), 0
  30.         xs = CINT(x0 - rs * COS((Pi / 180) * (6 * s + 90)))
  31.         ys = CINT(y0 - rs * SIN((Pi / 180) * (6 * s + 90)))
  32.         LINE (x0, y0)-(xs, ys), 4
  33.         xm = CINT(x0 - rm * COS((Pi / 180) * (90 + 6 * m)))
  34.         ym = CINT(y0 - rm * SIN((Pi / 180) * (90 + 6 * m)))
  35.         LINE (x0, y0)-(xm, ym), 15
  36.         xh = CINT(x0 - rh * COS((Pi / 180) * (90 + 6 * ((h MOD 12) * 5 + m \ 12))))
  37.         yh = CINT(y0 - rh * SIN((Pi / 180) * (90 + 6 * ((h MOD 12) * 5 + m \ 12))))
  38.         LINE (x0, y0)-(xh, yh), 1
  39.     END IF
  40. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут