Трабл с назначением цвета в режиме SCREEN 12 - QBasic

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

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

Листинг программы
  1. SCREEN 12
  2. WIDTH 80, 60
  3. PALETTE 1, &H20202
  4. PALETTE 2, &H30303
  5. PALETTE 3, &H40404
  6. PALETTE 4, &H50505
  7. PALETTE 5, &H60606
  8. PALETTE 6, &H70707
  9. PALETTE 7, &H80808
  10. PALETTE 8, &H90909
  11. PALETTE 9, &HA0A0A
  12. PALETTE 10, &HB0B0B
  13. PALETTE 11, &HC0C0C
  14. PALETTE 12, &HD0D0D
  15. PALETTE 13, &HE0E0E
  16. PALETTE 14, &HF0F0F
  17. PALETTE 15, &H101010
  18. FOR i = 1 TO 15
  19. COLOR i
  20. PRINT "Hello, World!"
  21. NEXT i
При запуске программы меняются цвета с атрибутами 1-5 и 7, а цвета 6 и 8-15 остаются стандартными. Такое только у меня и если нет, то почему так происходит? При

WIDTH 80,30

все цвета меняются согласно программе.

Не по теме:

Слово "проблема" оказалось запрещено для заголовка

Решение задачи: «Трабл с назначением цвета в режиме SCREEN 12»

textual
Листинг программы
  1.   DECLARE SUB SetRGB (CvA%, ReV%, GrV%, BlV%)   '  Палитра
  2.   DECLARE SUB Scr9RGB (CvS9%, ReV%, GrV%, BlV%)
  3.  
  4. SCREEN 12
  5. WIDTH 80, 60
  6. FOR i% = 1 TO 15
  7.    Scr9RGB i%, i% * 4, i% * 4, i% * 4
  8.    COLOR i%: PRINT i%
  9. NEXT i%
  10.  
  11. SUB Scr9RGB (CvS9%, ReV%, GrV%, BlV%)
  12.  IF CvS9% < 6 AND CvS9% > -1 THEN SetRGB CvS9%, ReV%, GrV%, BlV%
  13.  IF CvS9% = 6 THEN SetRGB 20, ReV%, GrV%, BlV%
  14.  IF CvS9% = 7 THEN SetRGB 7, ReV%, GrV%, BlV%
  15.  IF CvS9% > 7 AND CvS9% < 16 THEN SetRGB CvS9% + 48, ReV%, GrV%, BlV%
  16. END SUB
  17.  
  18. SUB SetRGB (CvA%, ReV%, GrV%, BlV%)
  19.  OUT &H3C8, CvA%: OUT &H3C9, ReV%: OUT &H3C9, GrV%: OUT &H3C9, BlV%
  20. END SUB

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

 1. Объявлены две подпрограммы: SetRGB и Scr9RGB.

  1. Задан режим экрана 12, а также ширина и высота экрана.
  2. Происходит цикл по 15 элементам.
  3. В каждой итерации цикла вызывается подпрограмма Scr9RGB с четырьмя аргументами.
  4. В подпрограмме Scr9RGB происходит проверка значения первого аргумента и, в зависимости от этого значения, вызывается подпрограмма SetRGB с соответствующими аргументами.
  5. Если значение первого аргумента подпрограммы Scr9RGB равно 6, то в подпрограмме SetRGB передаются значения 20, ReV%, GrV%, BlV%.
  6. Если значение первого аргумента подпрограммы Scr9RGB равно 7, то в подпрограмме SetRGB передаются значения 7, ReV%, GrV%, BlV%.
  7. Если значение первого аргумента подпрограммы Scr9RGB больше 7 и меньше 16, то в подпрограмме SetRGB передаются значения CvS9% + 48, ReV%, GrV%, BlV%.
  8. Если значение первого аргумента подпрограммы Scr9RGB меньше 6 или больше 16, то в подпрограмме SetRGB передаются значения CvS9%, ReV%, GrV%, BlV%.
  9. В подпрограмме SetRGB происходит запись цвета в регистры OUT &H3C8, CvA%, OUT &H3C9, ReV%, OUT &H3C9, GrV%, OUT &H3C9, BlV%.

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы