LINUX.ORG.RU

Сообщения Kogrom

 

9 мая

Поздравляю с Праздником!

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

 ,

Kogrom
()

Растровый 64-битный шрифт 7x9

Делюсь реализацией одной идеи. В библиотеках типа SDL2 своих встроенных шрифтов обычно нет. Для этого предусмотрены дополнительные библиотеки, зависеть от которых не хочется, да и придётся цеплять файл со шрифтом. Поэтому в Allegro, например, предусмотрели альтернативу: простейший растровый шрифт 8x8. Но там нет кириллицы.

У шрифтов 8x8 есть ещё такие недостатки: буквы маленькие и широкие, что особенно заметно на строчных. Это усугубляется тем, что некоторые буквы выступают вниз (например, «Д», «Щ») или вверх (Ё), из-за чего приходится оставлять пустое место сверху и снизу для остальных букв.

Шрифт 7x9 по битам занимает почти столько же, но выше и уже, что выглядит приятнее. Кроме того, лишний 64 бит можно использовать для признака сдвига вниз. Тогда не надо будет оставлять пустое место снизу. То есть строчка будет высотой даже не 9, а 10.

Коды для символов можно посмотреть тут. В отличие от Allegro я использовал не 8 uint8_t на символ, а одну uint64_t.

Исходный файл для правки тут. В качестве исходника используется не растровое изображение, а текстовое (ASCII art), для удобства трансляции. Приведу пример таких исходных символов:

В
.
.......
.#####.
.#....#
.#....#
.#####.
.#....#
.#....#
.#....#
.#####.
Г
.
.......
.#####.
.#.....
.#.....
.#.....
.#.....
.#.....
.#.....
.#.....
Д
#
...###.
..#..#.
.#...#.
.#...#.
.#...#.
.#...#.
.#...#.
#######
#.....#

Перед каждым изображением буквы оставил признак сдвига: точка если сдвига нет, # - если сдвиг на 1 вниз.

 , ,

Kogrom
()

Stodin DSL. Тема 5. Графический редактор (пиксель-арт).

Продолжаю развлекать публику. Почти создал графический редактор на своём DSL-е с помощью SDL2. Видео с примерами использования тут и тут. Видео записано в XUbuntu 20.04. Исходный код тут.

Интересные особенности.

  • Картинка сохраняется в текстовом виде. Каждый пиксель кодируется одним читаемым ASCII символом. Так сделано для простого внедрения картинки в текст программ (игрушек). Соответственно, число цветов ограничено 64 оттенками. В первом ролике видно, что на практике я не сразу научился правильно подбирать нужные цвета.
  • Я решил не использовать библиотеки шрифтов. Навелосипедил свой простой растровый шрифт. Каждая буква занимает одну 64-битную переменную (uint64_t). Исходник шрифта в виде абзацев 8x8 тут. Преобразованные символы тут.
  • Не использовалось ООП, указатели, функции обратного вызова. При этом в Windows и Linux компьютер особо не нагружается. В Wine почему-то тормозит.

Пока что недоделал диалоги сохранения. Нормальные люди дергают диалоги из имеющихся в системе библиотек. Но такой путь мне представляется ненадёжным. Буду что-то велосипедить. Пока что просто сохраняю в picture.txt.

 ,

Kogrom
()

Stodin DSL. Тема 4. Квадраты.

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

Процесс игры записал на видео: https://www.youtube.com/watch?v=YZUAp45pT8Q (ссылку уже давал в другой теме)

Код игры: https://github.com/kupriyanov-sn/StodinDSL/blob/master/examples/sdl_four_heroes_game

Инструкция и бинарики здесь: https://disk.yandex.ru/d/xJhJrNFPqgNLyg?w=1

Версия для Linux требует библиотеку SDL2. Работу проверял только в Убунте. Также можно запустить под Wine виндовую версию.

Не удержался и внёс изменения в синтаксис языка: добавил case. Через if-elif некоторые конструкции тяжело читать. В питоне в таких случаях делают словарь с указателями на функции, но это сложнее для восприятия. Может быть когда-нибудь и реализую через делегаты.

Вопросов у меня нет. Просто решил поделиться.

 , ,

Kogrom
()

7.1 Ответ на некорректное сообщение (авто, уровень 0) (-2)

Мне пришло два уведомления, что я ответил на некорректное сообщение в теме: Stodin DSL. Тема 3. Тетрис. . Но я там общался только с monk и правильным Владимиром (который создаёт ЯП на метаданных). Я перестраховывался и не отвечал на сообщения от ox55ff, seiken и Binkledum, которые могли быть восприняты как некорректные. Понимаю, что в некоторых темах я по неосторожности Царю отвечал и за это мне даже через пол года приходят уведомления. Но тут то что?

 , ,

Kogrom
()

Stodin DSL. Тема 3. Тетрис.

Очередная тема про язык программирования без скобочек.

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

https://github.com/kupriyanov-sn/StodinDSL/tree/master/examples/sdl_tetris

Сделано с применением основной библиотеки SDL2. Теоретически, будет работать под Linux, хотя сборку проверял только под Windows.

 , ,

Kogrom
()

Stodin DSL. Тема 2. Четыре героя.

Моему «коллеге» по созданию средств программировании на форуме задали задачку: создать тетрис, чтобы проверить возможности языка. Он отказался, а мне идея мне показалась интересной. Графика у меня пока не прикручена, поэтому я решил в качестве теста сделать консольную игрушку, которая только по духу близка к тетрису, лайнс, пасьянсу и т.д. За прототип я взял «Darkest Dungeon» и упростил до минимума.

Исходный код тут: https://github.com/kupriyanov-sn/StodinDSL/tree/master/examples/four_heroes_game

Также есть временная ссылка на архивы с бинариками и транслированным кодом C++: https://yadi.sk/d/0rjcBol5eJ_cBg

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

 , ,

Kogrom
()

Stodin DSL

Здравствуйте!

В данной теме представляю для обсуждения язык программирования, созданный с использованием принципов разработки предметно-ориентированных языков (по книге Мартина Фаулера). Ссылка на проект языка: https://github.com/kupriyanov-sn/StodinDSL

Язык называю DSL только по методу разработки и по синтаксису. По возможностям он близок к языкам общего назначения. При этом, по лаконичности он близок к Python, хотя и статически типизированный. Назначение языка - ускорение разработки небольших проектов на C++.

В данный момент это работающий прототип. Библиотека языка пока на начальной стадии разработки. Но уже есть 3 небольших приложения-примера, написанных на Stodin (в examples).

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

 , ,

Kogrom
()

RSS подписка на новые темы