Программирование на Бейсик 48/128 для ZX-Spectrum 1993 г.

SPECTRUM-бейсик - случайные числа. Анализ атрибутов знакоместа. Символы псевдографики. Символы, определяемые пользователем.


Случайные числа

RND, RANDOMIZE

В набор числовых функций Бейсика входит функция RND —
генератор псевдослучайных чисел. Потребность в получении слу-
чайных чисел возникает, например, при написании игровых про-
грамм, обучающих систем (выдача неповторяющихся заданий) и
во многих других случаях.

Для RND не нужен аргумент
— при вызове функция возвра-
щает случайное число в интер-
вале от 0 до 1. Распечатаем на
экране много-много раз значе-
ния, возвращаемые RND:

10 FOR i=1 ТО 100
20 PRINT RND; "
30 NEXT i

Получим ряд чисел, между ко-
торыми нет никакой видимой
зависимости, что и является
признаком случайности. Однако
если генерировать числа с по-
мощью RND долго-долго, то их
последовательность начнет по-
вторяться. Поэтому в название
функции добавлено слово
«псевдо». Хотя в подавляющем
большинстве случаев этим
«псевдо» можно пренебречь.

Существенным неудобством RND является то, что после запуска
(или сброса) компьютера функция каждый раз начинает гене-
рировать с одного и того же числа одну и ту же последовательность
(происки все того же «псевдо»). Пришлось ввести в Бейсик спе-
циальный оператор RANDOMIZE. Выполняя его с указанием вслед
за ним произвольного числа в интервале 1...65535, можно уста-

навливать начало последовательности случайных чисел. Если тре-
буется совершенно случайная последовательность с совершенно
случайным началом, то нужно вслед за RANDOMIZE поставить ноль
либо вообще ничего не писать. Выполним несколько раз (каждый
раз сбрасывая компьютер) строку:

RANDOMIZE: PRINT RND

Теперь-то уж мы приблизились к случайности — функция RND
каждый раз выбрасывает различные значения.

Для генерации случайных чисел в интервалах, отличных от
стандартно заданного для функции RND (0...1), используются эле-
ментарные алгебраические выражения. Например, оператор

PRINT 2+3+RND

будет выдавать случайные числа в интервале 2...5. Известная нам
функция INT поможет генерировать целые случайные числа. Ска-
жем, с помощью оператора

PRINT 1 +INT(RND*9)

можно получить последовательность целых случайных чисел от 1
до 10.

Анализ атрибутов знакоместа

ATTR

При написании игровых программ, да и во многих других
случаях,часто бывает необходимо определить атрибуты знакоместа
экрана, то есть выяснить, какими цветами оно раскрашено. В
Spectrum-Бейсике этим занимается функция ATTR. Аргументами
для нее являются координаты тестируемого знакоместа, размещае-
мые за ней в скобках через запятую: номер строки (0...22) и номер
столбца (0...31). В качестве результата ATTR возвращает числовое
значение от 0 до 255, которым зашифрованы значения атрибутов
знакоместа.

Выполним программку:

10 PRINT AT 10,10; INK 1; PAPER 6; BRIGHT 1; FLASH 1;'V;

20 PRINT ATTR(10, 10)

RUN

*241

В ней задаются, а затем считываются атрибуты знакоместа с
координатами (10, 10). Число 241 получается в результате вы-
числения выражения, в котором <INK>, <PAPER>, < BRIGHT > и
<FLASH> — значения атрибутов:

1 х <INK>+8 х <Р APER>+64 х <BRIGHT>+128 х <FLASH>

- то есть в нашем случае:

1x1+8x64-64x14-128x1=241

Символы псевдографики

В ZX Spectrum коды от 32 до 127 (см. табл. 1 на стр. 100)
соответствуют стандартному набору компьютерных символов (кро-
ме знаков i и ©). Этот набор называется ASCII-коды (American
Standard Code for Information Interchange).

Остальные символы не входят в ASCII. Символы с кодами от
128 до 143 включительно — это так называемые псевдографические
символы. «Графические» они потому, что представляют из себя
квадратики, прямоугольники и т. п. Их изображение помещено на
цифровых клавишах (от 1 до 8). «Псевдо» — потому, что по сути
они такие же символы, как и буквы, то есть выводятся на экран
нажатием соответствующих клавиш.

Переход в режим псевдографики происходит после одновремен-
ного нажатия двух клавиш: CS/9 (Graphics). Курсор меняется на
[GJ. Если одновременно с нажатием цифровых клавиш удержи-
вать клавишу SS, графические символы будут выводиться в инвер-
сном виде. Для выхода из режима [G] нужно нажать клавиши CS/9
или даже просто 9.

Символы, определяемые пользователем

В режиме псевдографики, кроме нанесенных на цифровые кла-
виши графических символов, на экран выводятся и так называе-
мые символы, определяемые пользователем (UDG — User Defined
Graphics). Их может быть до 22, и «привязываются» они к кла-
вишам от А до U. Это могут быть и дополнительные графические
символы, и произвольные значки, и — что часто можно встретить
в отечественных Speccy — буквы русского алфавита. Этим новым
символам присваиваются коды от 144 до 155.

Наша фантазия при создании новых символов ограничена
лишь размерами знакоместа (8x8 пикселей). Попробуем «сконст-
руировать» значок, показанный на рис. 5.

Для записи изображения символа в память компьютера его надо
представить последовательностью из 8 чисел, соответствующих
строкам пикселей знакоместа. Каждая строка представляется в
виде двоичного числа, исходя из принципа: есть точка в данной
позиции строки — ставится 1, нет — 0:

Эти числа, преобразованные с помощью функции bin в десяти-
чные, последовательно записываются в память компьютера, начи-
ная с адреса, возвращенного функцией usr*. Аргументом usr дол-
жен быть символ клавиши, за которой мы хотели бы «закрепить»
новый значок. Например, если мы запишем последовательность
полученных чисел, начиная с адреса usr "а", то в режиме курсора
[gj при нажатии на клавишу а будет выводиться наш символ.

Запись в память осуществляет специальный оператор Spectrum-
Бейсика РОКЕ**, вслед за которым через запятую нужно указать,
куда записывать (адрес) и что записывать:

poke usr "a", bin 00111100

Второе число записывается по следующему адресу:
poke usr "а"+1, bin 01000010

И так восемь раз. После этого можно перейти в режим курсора
[gj и попробовать выводить значок, нажимая клавишу а***.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
События - 8th оf маrсh.
Футбол - ДинАмо-КиеВ'999 (соСтАв ДинАмО).
Реклама - реклама и объявления.
Предисловие - О новой оболочке газеты.
Презентация - Perspective Commander 1.0: файловая оболочка.

В этот день...   29 марта