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

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

  1. Объявлены подпрограмма FLIP и переменные A-Z.
  2. Заданы константы Stars (40) и CoefTen (2).
  3. Создается массив S размером Stars на 2.
  4. Выводится прямоугольник 200 на 100 пикселей с координатами (200,100) и заполняется цветом.
  5. Переменная x инициализируется значением 270 + 50*CoefTen.
  6. Запускается цикл, который будет выполняться для каждой звезды (i от 1 до Stars).
  7. Внутри цикла вычисляются координаты звезды (S(i,0),S(i,1)).
  8. Если полученные координаты совпадают с координатами какой-либо звезды, цикл повторяется с начала.
  9. После завершения цикла выводится полнолуние (координаты (200,100)).
  10. Запускается основной цикл, который будет выполняться до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
  11. Внутри основного цикла выводится полумесяц (координаты (x,100)).
  12. Переменная x уменьшается на единицу.
  13. Выполняется подпрограмма FLIP, которая меняет местами значения переменных Act% и Viz%.
  14. Выводится экран с текущим изображением.
  15. Программа ожидает нажатия клавиши в течение 8 миллисекунд.
  16. Выводится экран с обновленными значениями Act% и Viz%.
  17. Программа продолжает выполняться до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
  18. Код внутри основного цикла выполняется до тех пор, пока не будет нажата клавиша или x не станет меньше 130 - 50*CoefTen.
  19. Если была нажата клавиша, программа завершается.
  20. Если x стало меньше 130 - 50*CoefTen, программа завершается.

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


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

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

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