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

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

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

При запуске программы меняются цвета с атрибутами 1-5 и 7, а цвета 6 и 8-15 остаются стандартными. Такое только у меня и если нет, то почему так происходит? При

WIDTH 80,30

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

Не по теме:

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

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

textual
Листинг программы
  DECLARE SUB SetRGB (CvA%, ReV%, GrV%, BlV%)   '  Палитра
  DECLARE SUB Scr9RGB (CvS9%, ReV%, GrV%, BlV%)
 
SCREEN 12
WIDTH 80, 60
FOR i% = 1 TO 15
   Scr9RGB i%, i% * 4, i% * 4, i% * 4
   COLOR i%: PRINT i%
NEXT i%
 
SUB Scr9RGB (CvS9%, ReV%, GrV%, BlV%)
 IF CvS9% < 6 AND CvS9% > -1 THEN SetRGB CvS9%, ReV%, GrV%, BlV%
 IF CvS9% = 6 THEN SetRGB 20, ReV%, GrV%, BlV%
 IF CvS9% = 7 THEN SetRGB 7, ReV%, GrV%, BlV%
 IF CvS9% > 7 AND CvS9% < 16 THEN SetRGB CvS9% + 48, ReV%, GrV%, BlV%
END SUB
 
SUB SetRGB (CvA%, ReV%, GrV%, BlV%)
 OUT &H3C8, CvA%: OUT &H3C9, ReV%: OUT &H3C9, GrV%: OUT &H3C9, BlV%
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
Похожие ответы