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

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

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

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

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

textual
Листинг программы
  DECLARE SUB FLIP ()
CONST Pmax = 250
CONST PointsRazlet = 25
CONST RazletLife = 40
CONST SnaryadLife = 100
  DIM Px(Pmax), Py(Pmax), Cv%(Pmax)
  DIM Sx(Pmax), Sy(Pmax), Life%(Pmax)
  DIM Stat%(Pmax)
  DIM Schet%
'  Экран
DIM SHARED Act%, Viz%
Act% = 1: Viz% = 0
SCREEN 9, , Viz%, Act%
 
WHILE INKEY$ = ""
 Schet% = (Schet% + 1) AND 3
 IF Schet% = 0 THEN
   FOR i = 1 TO Pmax
      IF Stat%(i) = 0 THEN
         Stat%(i) = 1
         Px(i) = 320 'RND * 320 + 160
         Py(i) = 349
         Cv%(i) = RND * 15
         Sx(i) = (RND * 5) - 2.5
         Sy(i) = -(RND * 1 + 2)
         Life%(i) = SnaryadLife * ((RND + 1) / 2)
         EXIT FOR
      END IF
   NEXT
 END IF
 
   CLS 2
   LINE (0, 336)-(639, 349), 0, BF
 
 FOR i = 1 TO Pmax
    IF Stat%(i) = 1 THEN
       Px(i) = Px(i) + Sx(i)
       Py(i) = Py(i) + Sy(i)
 
       CIRCLE (Px(i), Py(i)), 1, Cv%(i)
       PSET (Px(i), Py(i)), Cv%(i)
       Life%(i) = Life%(i) - 1
       
       IF Life%(i) = 0 THEN
         NeedInit% = PointsRazlet * (RND + .5)
         FOR k = 1 TO Pmax
            IF Stat%(k) = 0 THEN
              Stat%(k) = 2
              Px(k) = Px(i)
              Py(k) = Py(i)
              Sx(k) = (RND * 5) - 2.5
              Sy(k) = (RND * 5) - 2.5
              Life%(k) = RazletLife * (RND + .5)
              Cv%(k) = RND * 14 + 1
              NeedInit% = NeedInit% - 1
              IF NeedInit% = 0 THEN EXIT FOR
            END IF
         NEXT
         Stat%(i) = 0
 
       END IF
    ELSEIF Stat%(i) = 2 THEN
       Px(i) = Px(i) + Sx(i)
       Py(i) = Py(i) + Sy(i)
       PSET (Px(i), Py(i)), Cv%(i)
       Life%(i) = Life%(i) - 1
       IF Life%(i) = 0 THEN Stat%(i) = 0
    END IF
 NEXT
 
   FLIP
WEND
 
SUB FLIP
  SWAP Act%, Viz%
      SCREEN , , , Act%
      SCREEN , , Viz%, Act%
  WAIT &H3DA, 8
END SUB

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

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

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


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

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

9   голосов , оценка 3.333 из 5
Похожие ответы