Изобразить звёздное небо, полную луну и медленно надвигающуюся на неё тень земли - 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, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д