Нужно реализовать анимацию фейерверка - QBasic

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

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

Доброго времени суток всем!) Нужно реализовать анимацию фейерверка, то бишь летит точка и,доходя до определенной точки, взрывается и разлетается на несколько точек.

Решение задачи: «Нужно реализовать анимацию фейерверка»

textual
Листинг программы
  1.   DECLARE SUB FLIP ()
  2. CONST Pmax = 250
  3. CONST PointsRazlet = 25
  4. CONST RazletLife = 40
  5. CONST SnaryadLife = 100
  6.   DIM Px(Pmax), Py(Pmax), Cv%(Pmax)
  7.   DIM Sx(Pmax), Sy(Pmax), Life%(Pmax)
  8.   DIM Stat%(Pmax)
  9.   DIM Schet%
  10. '  Экран
  11. DIM SHARED Act%, Viz%
  12. Act% = 1: Viz% = 0
  13. SCREEN 9, , Viz%, Act%
  14.  
  15. WHILE INKEY$ = ""
  16.  Schet% = (Schet% + 1) AND 3
  17.  IF Schet% = 0 THEN
  18.    FOR i = 1 TO Pmax
  19.       IF Stat%(i) = 0 THEN
  20.          Stat%(i) = 1
  21.          Px(i) = 320 'RND * 320 + 160
  22.          Py(i) = 349
  23.          Cv%(i) = RND * 15
  24.          Sx(i) = (RND * 5) - 2.5
  25.          Sy(i) = -(RND * 1 + 2)
  26.          Life%(i) = SnaryadLife * ((RND + 1) / 2)
  27.          EXIT FOR
  28.       END IF
  29.    NEXT
  30.  END IF
  31.  
  32.    CLS 2
  33.    LINE (0, 336)-(639, 349), 0, BF
  34.  
  35.  FOR i = 1 TO Pmax
  36.     IF Stat%(i) = 1 THEN
  37.        Px(i) = Px(i) + Sx(i)
  38.        Py(i) = Py(i) + Sy(i)
  39.  
  40.        CIRCLE (Px(i), Py(i)), 1, Cv%(i)
  41.        PSET (Px(i), Py(i)), Cv%(i)
  42.        Life%(i) = Life%(i) - 1
  43.        
  44.        IF Life%(i) = 0 THEN
  45.          NeedInit% = PointsRazlet * (RND + .5)
  46.          FOR k = 1 TO Pmax
  47.             IF Stat%(k) = 0 THEN
  48.               Stat%(k) = 2
  49.               Px(k) = Px(i)
  50.               Py(k) = Py(i)
  51.               Sx(k) = (RND * 5) - 2.5
  52.               Sy(k) = (RND * 5) - 2.5
  53.               Life%(k) = RazletLife * (RND + .5)
  54.               Cv%(k) = RND * 14 + 1
  55.               NeedInit% = NeedInit% - 1
  56.               IF NeedInit% = 0 THEN EXIT FOR
  57.             END IF
  58.          NEXT
  59.          Stat%(i) = 0
  60.  
  61.        END IF
  62.     ELSEIF Stat%(i) = 2 THEN
  63.        Px(i) = Px(i) + Sx(i)
  64.        Py(i) = Py(i) + Sy(i)
  65.        PSET (Px(i), Py(i)), Cv%(i)
  66.        Life%(i) = Life%(i) - 1
  67.        IF Life%(i) = 0 THEN Stat%(i) = 0
  68.     END IF
  69.  NEXT
  70.  
  71.    FLIP
  72. WEND
  73.  
  74. SUB FLIP
  75.   SWAP Act%, Viz%
  76.       SCREEN , , , Act%
  77.       SCREEN , , Viz%, Act%
  78.   WAIT &H3DA, 8
  79. END SUB

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

  1. Объявление переменных и структур данных для реализации анимации фейерверка
  2. Инициализация переменных и структур данных
  3. Ввод условия, при котором будет выполняться основной цикл анимации фейерверка
  4. Основной цикл анимации фейерверка, который выполняется до тех пор, пока не будет нажата клавиша
  5. Внутри основного цикла происходит отрисовка фейерверка и обновление его состояния
  6. Если состояние фейерверка достигает конца своего жизненного цикла, то происходит инициализация нового фейерверка
  7. Определение процедуры для обновления экрана
  8. Завершение программы и выход из системы

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


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

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

9   голосов , оценка 3.333 из 5

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

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

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