Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Цветной текст в SCREEN 1

  1. #1 Цветной текст в SCREEN 1 
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Давным-давно захотелось мне возможности изменять цвет текста в SCREEN 1. С условием, что скомпилированная программа будет работать в CGA режиме, что исключает возможность использования оператора PALETTE. Ну и написал я небольшой алгоритм, окрашивающий текст в заданный цвет. Здесь же представлена небольшая программка с его использованием:

    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    backcolor = 0 'Цвет фона
    oldfontcolor = 3 'Старый цвет шрифта
    newfontcolor = 2 'Новый цвет шрифта
    scanstepx = 1 'Шаг вертикальной сканирующей линии
    scanstepy = 5 'Шаг горизонтальной сканирующей линии
    startx=1
    stopx=320
    starty=1
    stopy=200
    [Ссылки могут видеть только зарегистрированные пользователи. ] 1: COLOR backcolor, 1
    'Текст
    [Ссылки могут видеть только зарегистрированные пользователи. ] "ЗЕМЛЯ В ИЛЛЮМИНАТОРЕ"
    [Ссылки могут видеть только зарегистрированные пользователи. ] "ЗЕМЛЯ В ИЛЛЮМИНАТОРЕ"
    [Ссылки могут видеть только зарегистрированные пользователи. ] "ЗЕМЛЯ В ИЛЛЮМИНАТОРЕ ВИДНА"
    [Ссылки могут видеть только зарегистрированные пользователи. ] "КАК СЫН ГРУСТИТ О МАТЕРИ"
    [Ссылки могут видеть только зарегистрированные пользователи. ] "КАК СЫН ГРУСТИТ О МАТЕРИ"
    [Ссылки могут видеть только зарегистрированные пользователи. ] "ГРУСТИМ МЫ О ЗЕМЛЕ, ОНА ОДНА"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 'Ждем нажатия любой клавиши
    'Запускаем горизонтальную сканирующую линию
    FOR scany = starty TO stopy STEP scanstepy
            'Запускаем вертикальную сканирующую линию
            FOR scanx = startx TO stopx STEP scanstepx
                    SELECT CASE [Ссылки могут видеть только зарегистрированные пользователи. ](scanx, scany)
                    CASE [Ссылки могут видеть только зарегистрированные пользователи. ] = backcolor
                    'Nothing
                    CASE [Ссылки могут видеть только зарегистрированные пользователи. ] = oldfontcolor
                    [Ссылки могут видеть только зарегистрированные пользователи. ] (scanx, scany), newfontcolor, backcolor
                    CASE ELSE
                    'Nothing
                    [Ссылки могут видеть только зарегистрированные пользователи. ] SELECT
            NEXT scanx
    NEXT scany
    [Ссылки могут видеть только зарегистрированные пользователи. ] 'Ждем нажатия любой клавиши 
    [Ссылки могут видеть только зарегистрированные пользователи. ] 'Заканчиваем выполнение алгоритма

    Сие решение проблемы было мною забыто (я еще спрашивал у qbasic-а о других возможных решениях), но сейчас, разбирая древние файлы, я наткнулся на эту программку.

    Техническая особенность - чем больше scanstepx и scanstepy, тем быстрее производится окраска, но ее точность будет меньше (к вопросу об окраске знаков препинания).

    Надеюсь, кому-нибудь будет полезно. ;)
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    А как со скоростью работы? Быстрее чем стандартные функции в других видеорежимах?
    Ответить с цитированием  
     

  3. #3  
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от qbasic
    А как со скоростью работы? Быстрее чем стандартные функции в других видеорежимах?
    Вполне себе приемлемо.
    О каких конкретно функциях идет речь?
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Например:
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] 1
    COLOR 0, 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 2
    [Ссылки могут видеть только зарегистрированные пользователи. ] "Привет мир!"

    2-номер цвета.
    Ответить с цитированием  
     

  5. #5  
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Я же говорю - оператор PALETTE в CGA (!!!, в смысле, на CGA машине) не работает!

    Illegal function call in module EXMPL
    at address 01A2:0062


    Hit any key to return to system.
    Вот такое сообщение было выдано при попытке запуска вашей программы под эмулированной CGA машиной.
    Так-то!
    Ответить с цитированием  
     

  6. #6  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    SMB, ну тогда вопрос снимается. А в какой программе CGA эмулируете?
    Ответить с цитированием  
     

  7. #7  
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от qbasic
    А в какой программе CGA эмулируете?
    DOSBox, а где еще! :)
    Ответить с цитированием  
     

  8. #8  
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Вопрос - можно ли точно такой же алгоритм сделать на встроенном QBasic-овском ассемблере? Может быть будет работать быстрее.
    Ответить с цитированием  
     

  9. #9  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Думаю да. Работать должно быстрее, особенно если напрямую в видеопамять писать.
    Ответить с цитированием  
     

  10. #10  
    Разбирающийся
    Регистрация
    21.11.2010
    Сообщений
    31
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    А можешь попробовать? Я в ассемблере ноль без палочки, меня пугает этот язык. :(
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Изменение цвета текста в SCREEN 1
    от SMB в разделе QBasic
    Ответов: 3
    Последнее сообщение: 21.11.2010, 18:03
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •