5

Простые игры на STM32F103 со светодиодной панелью

Не так давно купил я себе цветную светодиодную панель. Какое-то время я с ней помучился, потом оказалось, что нужно спаять буферы и управлять панелью пятью вольтами, на 3.3 непосредственно от ног STM32 она глючила: https://eddy-em.livejournal.com/315574.html

Управляется панель по DMA ногодрыгом по таймеру (т.к. необходимо за один присест менять значение сразу шести ног — RGB-компоненты пары пикселей из верхней и нижней половинки экрана). Я реализовал условный восьмибитный цвет в формате RRRGGGBB, сначала пытался делать покадровую отрисовку, но мерцало не очень приятно, поэтому сделал построчную + добавил 7 пустых циклов, чтобы экран не был слишком ярким (т.е. каждая пара строк выводится 14 раз, при этом загораются нужные пиксели в зависимости от интенсивности; далее переходим к следующей строке). Получилось 56 кадров в секунду.

Разобравшись с экраном,  решил реализовать простейшие игрушки. Чтобы выбрать нужную игру, нарисовал простейшее меню:

Управление выполняется самопальным "джойстиком" с шестью кнопками (вверх-вниз-влево-вправо, меню, выбор). Намедни ко мне пришел купленный на али восьмикнопочный джойстик от "денди", я уже распаял разъем, подключив его к SPI2, надо будет набросать код для работы с ним (а то самодельный уж совсем мелкий и неудобный).

Начал со "змейки". Если змея съедает голубую точку, ее размер на 1 увеличивается. Зеленая точка уменьшает размер на 1. А желтая просто добавляет очки.

После завершения игры вылезает экран "Game over", на котором отображается результирующий счет.

Дальше я разобрался с "тетрисом" (ядро тетриса я набросал давно, а теперь осталось подправить его с учетом того, что отображение идет не средствами ncurses, а на светодиодной панели). Набор фигур классический, а вот размер "стакана" — нет.

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

Код на гитхабе: https://github.com/eddyem/stm32samples/tree/master/F1-nolib/...

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества