ZX Spectrum графика 1994 г.

Проекты - ПРИЛОЖЕНИЕ А.


ГЛАВА 15 Проекты

1. С помощью SPECTRUMa создайте цифровые часы. Для этой цели используйте встроенный в SPECTRUM датчик времени.

2. Напишите программу, которая бы проверяла квалификацию радистов. Входной информацией служит кусок текста, который программа переводит в последовательность точек и тире в соответствии с азбукой Морзе. Кодировка текста может сопровождаться звуковыми эквивалентами точек и тире. Должна быть предусмотрена возможность регулировки скорости поступления закодированной информации.

3. Нарисуйте набор дорожных знаков. Ваша программа должна рисовать фон (например, красные треугольники), после этого используйте свои собственные программы, или программы для вычерчивания переднего плана глав 5 и 6.

4. Постройте на экране поле для кроссворда. Каждый квадрат кроссворда имеет сторону в две единицы. Эти четыре блока могут быть либо чёрными (в этом случае они не содержат информации), либо белыми; в левом нижнем углу которых содержится буква решения, а верхние два блока - номер ключа (если таковой имеется). При таком размере блока на экране умещается головоломка размером 16 блоков на 11 блоков.

Так как на экране должны быть размещены и ключи к решениям, то места на экране будет явно недостаточно. Решить проблему можно с помощью метода "показа слайдов", описанного в главе 13. В первом кадре поместим поле кроссворда, а в остальных ключи. Ответы могут вставляться в кроссворд с помощью курсора или специальных команд. Например, буква "В" (по вертикали), или буква "Г" (по горизонтали), после которых идёт номер ключа, сопровождаемый вашим решением. Если ограничиться только небольшими кроссвордами, то можно использовать эти команды для вынесения соответствующих ключей в поле кроссворда.

5. Напишите свои собственные программы, использующие генератор символов и подпрограммы для генерации диаграмм (главы 5 и 6) для вычерчивания флагов каких-либо стран. Используйте технику главы 13, делающую доступным содержимое ячеек дисплейного файла, с тем, чтобы добавить новую опцию к программам генерации диаграмм. Эта опция позволяет скопировать группу символов (находящуюся на экране и определенную с помощью курсора) в другую группу символов (также находящуюся на экране и определенную с помощью курсора). Должна быть предусмотрена возможность вращать или зеркально отражать эту группу.

6. Напишите программу, которая бы рисовала ноты, которые воспроизводятся командой BEEP. Для этого вам нужно начертить нотный стан и создать специальные символы, изображающие нотные знаки. Применявшийся в старых бальных залах приём "скачущего мячика" для отбивания такта можно применять и здесь.

7. Используйте блочную графику для создания лабиринтов. Естественно, что программа должна создавать лабиринты, для которых имеется правильное решение. Ограничивайте поиск решения лимитом времени. Генерируйте лабиринты, меняющиеся в ходу игры. Добавляйте дополнительные сложности, вроде рыскающих по лабиринту людоедов, неожиданно открывающихся люков, переносов в другие участки лабиринта, если вы движетесь по нему слишком медленно.

8. Расширьте набор методов, предложенных в главе 7. Нарисуйте гистограммы, графики и круговые диаграммы придуманного вами типа. Сделайте их подвижными (либо методом, использованным в программе "MOVIE", либо методом, использованным в программе "WORM GAME", главы 1 или его модификацией в главе 14).

Генерируйте множества специальных символов. Создавайте трёхмерные гистограммы, окрашивая каждый столбик тремя цветами. Высота передней части каждого столбика должна выражаться в целых числах и иметь ширину в два блока. Ширина боковой стенки столбца - один блок, боковая стенка оканчивается треугольной шапочкой, заполняющей правую нижнюю половину символьного блока. Третья часть столбца лежит поверх первой и имеет форму ромба, и касается двух первых частей. Такое строение столбика гарантирует, что в одном блоке используется не более двух цветов, а, кроме того, это изображение похоже на ортогональную проекцию прямоугольного столбца.

9. Создание орнаментов. Используйте команду OVER для нанесения большого числа случайных линий на экран, или нарисуйте большое число прямых, расположенных регулярным образом. Например, проведите прямые, соединяющие точки (0,I) с точками (255,175-I), где 0<=I<=175 и точки (0,I) с точками (255-1,175), где 0<=I<=255. Обобщите метод программы из главы 5, которая генерирует узоры, для создания сложных симметричных узоров -любой учебник кристаллографии может натолкнуть вас на хорошие идеи.

10. В книгах по кристаллографии имеется много интересных трёхмерных объектов. Перейдём в пространство четырёх измерений - вершины теперь - это вектора с четырьмя координатами, для преобразования которых требуется матрицы 5x5. При ортогональном проецировании мы просто отбрасываем значение двух координат, что является трансляцией, масштабированием и поворотом в четырёхмерном пространстве.

11. Имеется множество игр, где SPECTRUM можно использовать в качестве игровой доски, или в качестве судьи, или в качестве противника.

12. Используйте специальные символы для построения колоды карт. Эта программа может быть включена в программу игры в карты, где SPECTRUM выполняет роль банкомета или противника.

13. При помощи SPECTRUMa можно создавать головоломки на экране дисплея. Допустим, например, что имеются девять квадратов, каждый из которых поделен диагоналями на четыре части. Каждая четверть окрашена в свой цвет (голубой - "1", красный - "2", жёлтый - "3", зелёный - "4") и имеет свой знак ("+" или "-").

Каждый квадрат задается последовательностью четырёх чисел, обозначающих вершины, обходимые против часовой стрелки, например, (-1,-2,1,4), (-1,3,4,2), (1,-4,-2,3), (1,2,-3,-2), (2,-3,-4,3), (1,4,-3,-2) и два раза (-1,-4,3,2).

Проблема заключается в том, чтобы составить из квадратов квадрат 3x3, так что если два маленьких квадрата касаются друг друга, то они должны быть одного цвета, но с противоположными знаками. С помощью SPECTRUMa вы можете поместить эти квадраты в левой части экрана, а в правой части экрана поместить сетку с ячейками величиной с малый квадрат. Квадратики можно вставлять в ячейки, либо переносить обратно на левую половину.

Напишите программу, решающую эту головоломку. Время выполнения этой программы около 10 минут, и она должна находить два различных решения.

14. Составьте пакет программ графики среднего разрешения, оперирующей с блоками две четверти на две четверти. Этот пакет должен быть аналогичен пакету главы 5. Экран состоит из 64 блоков по горизонтали и 44 блоков по вертикали.

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

15. Напишите видеоигру типа PACMAN. Для этого потребуется создать на экране пять движущихся объектов. Для того чтобы программа создавалась быстрее, ограничьте число движущихся за один шаг привидений двумя.

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

Хорошие программы видеоигр отличает высокая скорость выполнения. Для перемещения привидений по экрану можно использовать машинный код.

16. Напишите программу, которая бы высвечивала в левой половине экрана меню, состоящее из специальных символов вроде стилизованных изображений элементов электронных цепей (конденсаторы, сопротивления, и т.д.). Элементы с помощью курсора можно помещать в любое место экрана. Кроме того, должна быть предусмотрена возможность проводить соединительные линии, делать надписи (например, для обозначения "ом") и сдвигать или удалять символы. Дополнительные опции могут позволять заносить изображение в память и на ленту, а также удалять меню из построенной схемы.

17. В наших программах мы предполагали, что все объекты расположены перед наблюдателем. Переделайте программы с учётом того, что объекты могут располагаться за наблюдателем.

ПРИЛОЖЕНИЕ А SPECTRUM с объёмом памяти 16К

Более 7 К памяти отводится под дисплейный файл и системные переменные, что оставляет около 8.8 К памяти для программ и данных. Многие из программ, приведенных в этой книге, занимают больше места в памяти, однако все же большинство программ пригодны и для SPECTRUMa с объёмом памяти 16К, если соблюдать следующие правила.

Перед загрузкой программ из них следует удалить все комментарии. Используйте рекомендации главы 13 для оптимизации кода программы. Например, программа, генерирующая изображение самолёта, умещается в памяти, если удалены подпрограммы "SCALE", "PLOT" и все комментарии.

Возможно, что четыре набора символов и набор графических символов, определяемых пользователем, занимают слишком много места в памяти. При наличии места таблица адресов содержит значения 15360, 29271, 30039, 30807, 31575 и 32080. Возможно, что наборы с большими номерами мешают размещению в памяти программ или данных, а иногда даже приводят к ошибкам в работе компьютера. Оператор CLEAR 62294, находящийся в начале программ, использующих альтернативные на боры символов, следует заменить на CLEAR 255+адрес начала наиболее удаленного из наборов.

Вы можете убедиться, что программе CHARACTER GENERATOR не хватает места для второго набора символов, и в этом случае оператор есть CLEAR 255+30039. Если ваша программа использует второй набор, то запишите его на ленту и загружайте при необходимости.

Вы можете разбить программы на независимые куски и записывать результаты работы этих программ на ленту. Эти файлы перезагружаются в память вместе с другими программами; рассмотрим, например, программу построения диаграмм из главы 6. Вам следует загрузить оператором LOAD подпрограмму "LIBDIAG" и загрузить оператором MERGE одну из подпрограмм для построения гистограмм, круговых диаграмм или редактирующих подпрограмм. При запуске программ следует помнить, что они не должны вызывать подпрограммы, которые не загружены в память. Для записи изображения на экране на ленту используются команды SAVE и LOAD с опцией SCREENS, а для записи массивов используется опция DATA. После этого вы можете загрузить редактирующие программы для завершения оформления диаграмм.

К сожалению, некоторые программы не помещаются в памяти, несмотря ни на какие ухищрения. К таким программам относятся программы удаления невидимых линий нетривиальных объектов, программа мультиплицирования и программа игры ISLAND DEFENCE.

Если вы собираетесь серьёзно заниматься машинной графикой, то мы настоятельно рекомендуем вам приобрести дополнительную память.




СОДЕРЖАНИЕ:
  1. Трёхмерная декартова геометрия - Определение прямой; Угол между двумя направляющими векторами; Определение плоскости70 Точка пересечения прямой и плоскости; Расстояние от точки до прямой; Точка пересечения двух прямых; Плоскость, проходящая через три неколлинеарные точки; Точка пересечения трёх плоскостей; Линия пересечения двух плоскостей; Функциональное представление поверхности; Лежит ли точка по ту же сторону от плоскости, что и начало координат?; Каково направление обхода двумерного многоугольника, заданного последовательностью своих вершин?


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

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



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

Похожие статьи:
Юмор - Штирлиц. Продолжение.
TWILIGHT - Описание игры: TWILIGHT SHADOW of ISLAND.
Обо всём - как раскрасить унылый IS-DOS.
Комьюнити - ZX Spectrum: Как это было в Рязани (1991-1993).
ACEdit - Список Заслуженных Неиспользователей AC Edit.

В этот день...   21 ноября