Изобразить звёздное небо, полную луну и медленно надвигающуюся на неё тень земли - QBasic
Формулировка задачи:
Здравствуйте!помогите , пожалуйста, решить задачу! графика в бэйсике! вот задача-затмение луны:изобразить на экране звёздное небо, полную луну и медленно надвигающуюся на неё тень земли.затем медленное открытие диска луны.(тень земли должна быть больше луны). очень нужно.помогииите
Решение задачи: «Изобразить звёздное небо, полную луну и медленно надвигающуюся на неё тень земли»
textual
Листинг программы
- DECLARE SUB FLIP ()
- DEFINT A-Z
- DIM SHARED Act%, Viz%
- Act% = 1: Viz% = 0
- SCREEN 9, , Act%, Viz%
- CONST Stars = 40, CoefTen = 2
- DIM S(Stars, 1)
- CIRCLE (200, 100), 50, 15, , , .9
- PAINT (200, 100), 15, 15
- x = 270 + 50 * CoefTen
- FOR i = 1 TO Stars
- a: S(i, 0) = RND * 639
- S(i, 1) = RND * 349
- IF POINT(S(i, 0), S(i, 1)) GOTO a
- NEXT
- OUT &H3C8, 1: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 0
- DO: CLS 2
- CIRCLE (200, 100), 50, 15, , , .9
- PAINT (200, 100), 15, 15
- CIRCLE (x, 100), 50 * CoefTen, 1, , , .9
- PAINT (x, 100), 1, 1
- FOR i = 1 TO Stars
- CIRCLE (S(i, 0), S(i, 1)), 2, 15
- PAINT (S(i, 0), S(i, 1)), 15, 15
- NEXT
- x = x - 1
- FLIP
- LOOP UNTIL INKEY$ <> "" OR x < 130 - 50 * CoefTen
- SUB FLIP
- SWAP Act%, Viz%
- SCREEN , , , Viz%
- WAIT &H3DA, 8
- SCREEN , , Act%, Viz%
- END SUB
Объяснение кода листинга программы
- Объявлены подпрограмма FLIP и переменные A-Z.
- Заданы константы Stars (40) и CoefTen (2).
- Создается массив S размером Stars на 2.
- Выводится прямоугольник 200 на 100 пикселей с координатами (200,100) и заполняется цветом.
- Переменная x инициализируется значением 270 + 50*CoefTen.
- Запускается цикл, который будет выполняться для каждой звезды (i от 1 до Stars).
- Внутри цикла вычисляются координаты звезды (S(i,0),S(i,1)).
- Если полученные координаты совпадают с координатами какой-либо звезды, цикл повторяется с начала.
- После завершения цикла выводится полнолуние (координаты (200,100)).
- Запускается основной цикл, который будет выполняться до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
- Внутри основного цикла выводится полумесяц (координаты (x,100)).
- Переменная x уменьшается на единицу.
- Выполняется подпрограмма FLIP, которая меняет местами значения переменных Act% и Viz%.
- Выводится экран с текущим изображением.
- Программа ожидает нажатия клавиши в течение 8 миллисекунд.
- Выводится экран с обновленными значениями Act% и Viz%.
- Программа продолжает выполняться до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
- Код внутри основного цикла выполняется до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
- Если была нажата клавиша, программа завершается.
- Если x стало меньше 130 - 50*CoefTen, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д