Как сделать ascii игру
Добавил пользователь Alex Обновлено: 19.09.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, если вдруг понадобится.
Читайте также: