Нужно реализовать анимацию фейерверка - 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
Объяснение кода листинга программы
- Объявление переменных и структур данных для реализации анимации фейерверка
- Инициализация переменных и структур данных
- Ввод условия, при котором будет выполняться основной цикл анимации фейерверка
- Основной цикл анимации фейерверка, который выполняется до тех пор, пока не будет нажата клавиша
- Внутри основного цикла происходит отрисовка фейерверка и обновление его состояния
- Если состояние фейерверка достигает конца своего жизненного цикла, то происходит инициализация нового фейерверка
- Определение процедуры для обновления экрана
- Завершение программы и выход из системы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д