9 мая
Поздравляю с Праздником!
Понимаю, что время не простое, все думают как бы чего не вышло, как бы кто не обиделся, не устроил вакханалию. Но на этот случай была рекомендация от Альфы и ответ Хоббита. Надеюсь эти цитаты ещё актуальны.
Поздравляю с Праздником!
Понимаю, что время не простое, все думают как бы чего не вышло, как бы кто не обиделся, не устроил вакханалию. Но на этот случай была рекомендация от Альфы и ответ Хоббита. Надеюсь эти цитаты ещё актуальны.
Делюсь реализацией одной идеи. В библиотеках типа SDL2 своих встроенных шрифтов обычно нет. Для этого предусмотрены дополнительные библиотеки, зависеть от которых не хочется, да и придётся цеплять файл со шрифтом. Поэтому в Allegro, например, предусмотрели альтернативу: простейший растровый шрифт 8x8. Но там нет кириллицы.
У шрифтов 8x8 есть ещё такие недостатки: буквы маленькие и широкие, что особенно заметно на строчных. Это усугубляется тем, что некоторые буквы выступают вниз (например, «Д», «Щ») или вверх (Ё), из-за чего приходится оставлять пустое место сверху и снизу для остальных букв.
Шрифт 7x9 по битам занимает почти столько же, но выше и уже, что выглядит приятнее. Кроме того, лишний 64 бит можно использовать для признака сдвига вниз. Тогда не надо будет оставлять пустое место снизу. То есть строчка будет высотой даже не 9, а 10.
Коды для символов можно посмотреть тут. В отличие от Allegro я использовал не 8 uint8_t на символ, а одну uint64_t.
Исходный файл для правки тут. В качестве исходника используется не растровое изображение, а текстовое (ASCII art), для удобства трансляции. Приведу пример таких исходных символов:
В
.
.......
.#####.
.#....#
.#....#
.#####.
.#....#
.#....#
.#....#
.#####.
Г
.
.......
.#####.
.#.....
.#.....
.#.....
.#.....
.#.....
.#.....
.#.....
Д
#
...###.
..#..#.
.#...#.
.#...#.
.#...#.
.#...#.
.#...#.
#######
#.....#
Перед каждым изображением буквы оставил признак сдвига: точка если сдвига нет, # - если сдвиг на 1 вниз.
Продолжаю развлекать публику. Почти создал графический редактор на своём DSL-е с помощью SDL2. Видео с примерами использования тут и тут. Видео записано в XUbuntu 20.04. Исходный код тут.
Интересные особенности.
Пока что недоделал диалоги сохранения. Нормальные люди дергают диалоги из имеющихся в системе библиотек. Но такой путь мне представляется ненадёжным. Буду что-то велосипедить. Пока что просто сохраняю в picture.txt.
Продолжаю серию тем про язык программирования 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 некоторые конструкции тяжело читать. В питоне в таких случаях делают словарь с указателями на функции, но это сложнее для восприятия. Может быть когда-нибудь и реализую через делегаты.
Вопросов у меня нет. Просто решил поделиться.
Мне пришло два уведомления, что я ответил на некорректное сообщение в теме: Stodin DSL. Тема 3. Тетрис. . Но я там общался только с monk и правильным Владимиром (который создаёт ЯП на метаданных). Я перестраховывался и не отвечал на сообщения от ox55ff, seiken и Binkledum, которые могли быть восприняты как некорректные. Понимаю, что в некоторых темах я по неосторожности Царю отвечал и за это мне даже через пол года приходят уведомления. Но тут то что?
Очередная тема про язык программирования без скобочек.
Здесь на форуме кто-то предлагал тест для самодельных язычков и прочих средств разработки: создание тетриса. Тест пройден:
https://github.com/kupriyanov-sn/StodinDSL/tree/master/examples/sdl_tetris
Сделано с применением основной библиотеки SDL2. Теоретически, будет работать под Linux, хотя сборку проверял только под Windows.
Моему «коллеге» по созданию средств программировании на форуме задали задачку: создать тетрис, чтобы проверить возможности языка. Он отказался, а мне идея мне показалась интересной. Графика у меня пока не прикручена, поэтому я решил в качестве теста сделать консольную игрушку, которая только по духу близка к тетрису, лайнс, пасьянсу и т.д. За прототип я взял «Darkest Dungeon» и упростил до минимума.
Исходный код тут: https://github.com/kupriyanov-sn/StodinDSL/tree/master/examples/four_heroes_game
Также есть временная ссылка на архивы с бинариками и транслированным кодом C++: https://yadi.sk/d/0rjcBol5eJ_cBg
Если кому интересно, просьба потестировать на ошибки, возможно, дать какие-то советы по типам и умениям героев, балансу и т.д. Полное прохождение игры занимает минут 20, так что много времени это не займёт.
Здравствуйте!
В данной теме представляю для обсуждения язык программирования, созданный с использованием принципов разработки предметно-ориентированных языков (по книге Мартина Фаулера). Ссылка на проект языка: https://github.com/kupriyanov-sn/StodinDSL
Язык называю DSL только по методу разработки и по синтаксису. По возможностям он близок к языкам общего назначения. При этом, по лаконичности он близок к Python, хотя и статически типизированный. Назначение языка - ускорение разработки небольших проектов на C++.
В данный момент это работающий прототип. Библиотека языка пока на начальной стадии разработки. Но уже есть 3 небольших приложения-примера, написанных на Stodin (в examples).
Возможно, у кого-нибудь будут идеи, советы, пожелания как по библиотеке, так и по синтаксису.