Как сделать ascii игру

Добавил пользователь Владимир З.
Обновлено: 20.08.2024

Краткий пример создания простых ASCII-символов в Java.

1. Обзор

В этой статье мы обсудим создание графической печати символов ASCII или Строк в Java, используя концепции из поддержки 2D-графики языка.

2. Рисование Строк С Помощью 2D-Графики

С помощью класса Graphics2D можно нарисовать Строку в виде изображения, вызвав метод drawString () .

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

Хотя это утомительная задача, она часто выполняется путем создания экземпляра BufferedImage в Java и извлечения из него базового экземпляра Graphics :

2.1. Замена Индексов Матрицы Изображений Символом ASCII

При рисовании Строк класс Graphics2D использует простую матричную технику, когда областям, которые вырезают спроектированные Строки , присваивается определенное значение, в то время как другим присваивается нулевое значение.

Чтобы мы могли заменить вырезанную область нужным символом ASCII, нам нужно определить значения вырезанной области как единственную точку данных (например, целое число), а не значения цвета RGB.

Чтобы цвет RGB изображения был представлен в виде целого числа, мы устанавливаем тип изображения в целочисленный режим:

Фундаментальная идея состоит в том, чтобы заменить значения, присвоенные ненулевым индексам матрицы изображения, желаемым художественным характером.

В то время как индексам матрицы, представляющим нулевое значение, будет присвоен один символ пробела. Нулевой эквивалент целочисленного режима равен -16777216.

3. Генератор ASCII-изображений

Давайте рассмотрим случай, когда нам нужно сделать ASCII-изображение строки “BAELDUNG”.

Мы начинаем с создания пустого изображения с требуемой шириной/высотой и типом изображения, установленным в целочисленный режим, как указано в разделе 2.1.

Чтобы иметь возможность использовать расширенные параметры рендеринга 2D-графики в Java, мы приведем наш объект Graphics к экземпляру Graphics2D . Затем мы задаем необходимые параметры рендеринга перед вызовом метода drawString() со строкой “BAELDUNG” :

В приведенном выше примере 12 и 24 представляют соответственно координаты x и y для точки на изображении, с которой должна начинаться печать текста.

Теперь у нас есть 2D-графика, базовая матрица которой содержит два типа дискриминируемых значений: ненулевые и нулевые индексы.

Но для того, чтобы мы получили концепцию, мы пройдем через 2-мерный массив (или матрицу) и заменим все значения символом ASCII “*” на:

Вывод выше показывает только блок звездочек ( * ), как показано ниже:

Если мы различим замену на”*”, заменив только целочисленные значения, равные -16777216, на”*”, а остальные на ” “:

Мы получаем другое искусство ASCII, которое соответствует нашей строке “BAELDUNG”, но в перевернутом виде, как это:

Наконец, мы инвертируем дискриминацию, заменив целочисленные значения, равные -16777216, на””, а остальные-на “*”:

Это дает нам ASCII-код желаемой строки :

4. Заключение

В этом кратком руководстве мы рассмотрели, как создавать ASCII-рисунки на Java с помощью встроенной библиотеки 2D – графики.

Хотя мы показали специально для текста; “BAELDUNG”, исходный код на Github предоставляет служебную функцию, которая принимает любую строку .

Сначала таблицу ASCII использовали для кодирования символов, теперь это крутая площадка для программистских экспериментов. Отличный пример — трёхмерная онлайн-игра Asciicker, которая состоит целиком из разноцветных букв и цифр и работает прямо в браузере.

Ладно, на самом деле это псевдо-3D: игра отрисовывает ракурсы заново при каждом повороте камеры. Но происходит это так быстро, что вы ничего не заметите. Asciicker создана исключительно на JavaScript — без какого-либо игрового движка и других инструментов.

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

В ссылке на игру есть буква X, после которой идёт число. Хотите посмотреть на проект в его первоначальном виде — поставьте единицу. Чтобы получить актуальную версию, введите 13. Судя по изменениям, которые можно проследить таким образом, автор сильно старается.



змейка и тетрис в имаксе

>кстати, с ascii-стратегиями никто не сталкивался?

В репозиториях gentoo было что-то, но я не собирал. Я сам хотел написать консольную стратегию, но времени пока нет.

angband. для мультиплеера mangband. для утех и извращений: более 40 вариантов angband.

Кстати, где можно найти уже вписанного в сырцы и makefile борга, а то никак не получается интегрировать, а кино посмотреть хочется.

Ты ещё скажи, что Emacs psychiatrist это интерактивный квест.

> змейка и тетрис в имаксе

Тогда уж nethack в имаксе.


до чего наука дошла

nethack на лиспе переписали? Вот занятся людям нечем, лучше бы написали еще один roguelike, их так мало.

> nethack на лиспе переписали?

Да нет, просто удобная оболочка к нему.



Все забыли про пакет bsd-games (или bsdgames), в котором много интересных аски-игр. Мои любимые - это battlestar (текстовое приключение) и trek (по мотивам Star Trek)

Никто не забыл. Просто про bsd у нас либо со скандалом, либо никак. А самое прикольное там это симулятор авиадиспетчера. :)

> Вот занятся людям нечем, лучше бы написали еще один roguelike, их так мало.

У меня даже поле для комментирования покраснело. Оно тоже не знает, что на это сказать.

>> Вот занятся людям нечем, лучше бы написали еще один roguelike, их так мало.

У меня даже поле для комментирования покраснело.


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


Появившиеся через несколько десятков лет электронные печатные машинки унаследовали от обычных механических печатных машинок в качестве устройства ввода клавиатуру с набором символов. Результат ввода строки с клавиатуры можно было наблюдать на небольшом экране и ошибку можно было скорректировать непосредственно перед печатью.

С появлением компьютеров всё стало ещё проще. Теперь весь текст набирался при помощи клавиатуры, а проверялся на экране. И его можно было не только напечатать на бумаге, но и сохранить в файле. Пользователи вздохнули свободнее – стало можно проверять результат набора, корректировать его, делать многократную печать, хранить и передавать копии текста. Инструменты работы с текстами стали более гибкими.


Вначале компьютерщики рисовали простые, контурные картинки, используя слэши, минусы и подчёркивания. В основном это были надписи.



Наиболее продвинутые художники применяли такие великолепные техники заливки и сглаживания символами, что отдельные символы уже не замечались. Картинка воспринималось полноценным полутоновым изображением. Несмотря на то, что изобразительные средства были сильно ограничены, ascii-художникам удавалось создавать шедевры.


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

Псевдографика

Предвидя, что в текстовом режиме всё же иногда хочется видеть что-то, отличное от обычных алфавитно-цифровых символов, разработчики стандарта ASCII добавили к буквам, цифрам и знакам препинания ещё две группы интересных символов – рамочки и блоки. Рамочки были нужны для красивого оформления таблиц, потому что рисование рамочек обычными символами выглядело уж совсем по-колхозному.


Блочные же элементы применялись по большей части в интерфейсах программ, ими хорошо было делать тени и некоторые элементы интерфейса типа вертикальной прокрутки или прогресс-бара.



ANSI-графика

Главное, чего не хватало ASCII-художникам – цвета. Поэтому когда на компьютерных терминалах появилась возможность использовать цвет, то это сразу же было взято на вооружение. Добавляя специальные комбинации символов в обычный текст можно было давать команду изменить цвет символа и фона. Драйвер ANSI.SYS под DOS поддерживал 16 цветов для шрифта и 8 цветов для фона, да ещё позволял изменять его интенсивность. По сравнению с монохромными ASCII это было просто сумасшедшей палитрой.


Вначале, конечно, пробовали просто прикрутить цвета к олдскулу, получив так называемые ANSCII.


Но многие художники посчитали, что олдскул уже морально устарел, и при рисовании ansi практически полностью перешли на блочный стиль.


Рисовать ascii можно было в обычном текстовом редакторе. Но создавать ASNI-файлы вручную уже было трудно и часто использовались специальные программы, в частности такие редакторы как TheDraw (написанный Яном Э. Дэвисом в 1986 году), или появившиеся позже AcidDraw, PabloDraw .


Отдельно для рисования шрифтов были утилиты типа FigLet или Toilet .



Художники же, чтобы их искусство не пропадало даром, стали объединяться с другими такими же художниками, а также музыкантами, программистами и другими творческими личностями в арт-группы. Возникло такое течение в современном искусстве как демосцена.


Сейчас

Почти полное исчезновение BBS, MS-DOS и вообще пользовательских программ с текстовым интерфейсом резко уменьшило популярность ANSI-графики. Windows по умолчанию уже не поддерживает ANSI графику в консоли. Не работают с текстовыми форматами и популярные просмотрщики. Поэтому даже чтобы просто посмотреть ANSI-картинку нужно использовать специальную программу, например, AcidView . А вот в Linux графика ANSI по-прежнему поддерживается консольным текстовым драйвером.

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

Например, возникло целое направление игр жанра Roguelike, в которых для изображения игровых объектов используются символы ASCII и цвета ANSI.


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

Одно время можно было смотреть гугловские улицы в аски-виде.

Некоторые доходили до того, что перегоняли в аски целые фильмы (хотя это уже скорее искусство программирования, а не рисования):

А недавно пользователь Пикабу Cyberslav объявил о создании под Андроид игры-платформера Unsigned Character в полном духе олдскульного ASCII (с небольшими оговорками):

А вот вообще просто прекрасная олдскульная anscii-игрушка-платформер ASCIIDENT:

В общем, ASCII и ANSI графика продолжает своё существование и даже развитие, несмотря на.

Смайлики

При помощи комбинации пары десятков ascii-символов были придуманы тысячи различных эмотиконов. В 2005 году группой энтузиастов была сделана попытка стандартизировать используемые на сетевых просторах смайлики и правила их создания, и получился Нормализованный Тезаурус Смайлов . При помощи смайликов можно обозначать что угодно: профессии и занятия людей, обозначать их онтогенетическую, этническую и социальную принадлежность, отображать предметы одежды и аксессуары, части человеческого тела, причёски, болезни, психические и другие состояния, физические действия. А также огромный пласт смайликов - это животные, растения и грибы, еда, разные объекты живой и неживой природы, отдельные личности и персонажи, бранные выражения… В общем, смайлами можно полноценно общаться, вообще не применяя слова :))).

Самые популярные смайлы:

Менее популярные, но тоже применяющиеся:

UNICODE


В настоящее время стандарт UNICODE является преобладающим в Интернете. Применение этого стандарта позволило закодировать очень большое число символов из разных систем письменности: в одном уникодовском документе могут соседствовать китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, символы музыкальной нотной нотации, при этом стало ненужным переключение кодовых страниц.


Нынешние пользователи интернета стали привлекать для целей создания смайликов не только ASCII-символы, но и символы UNICODE.

Разработчики стандарта UNICODE сжалились над пользователями, поняли, что смайлики стали неотделимой частью сетевой жизни, и добавили в уникод 1809 эмодзи – маленьких картинок, которые практически повторяют все возможные текстовые смайлики, применявшиеся пользователями ранее. И стало возможным рисовать вот такие картинки (как ни странно, это не маленькие изображения, а самые настоящие текстовые символы, такие же, как и символы ASCII):




Что ещё





Архив артпаков 1990-2020

Для просмотра артпаков установите себе вьювер AcidView , он умеет смотреть и графические файлы, и ансишки, причём прямо в архивах, их не придётся разворачивать. Можно настраивать шрифты, разрешение просмотра, и даже конвертировать ansi в png или gif, если вдруг понадобится.

Читайте также: