Электронная игра Крестики-Нолики. К чему я пришел
Приветствую, Хабр!
Примерно год назад я сделал первую версию электронной игры крестики-нолики. Которая включала в себя только одну игру с живым соперником. Если интересно, что из этого получилось, прошу под кат.
Делал я все неспешно и только в свободное время.
Сначала коротко расскажу о минусах, которые были в первом варианте. Это больше мое личное мнение. Детям и моим друзьям это нисколько не мешает играть. Недочеты можно разделить на две группы — это эстетические и финансовые. Ниже я расскажу, чего же удалось добиться.
Эстетика
Вес и размеры. Я хотел получить тонкую игрушку, которая бы легко помещалась в детский карман и весила, при этом, не как кирпич.
Первое, что было необходимо сделать — это отказаться от двухплатного исполнения и штыревых разъемов (и вообще штыревых компонентов).
Второе — это уменьшить аккумулятор. 1.5А, как мне сразу показалось, было очень много по емкости и по весу.
Третье — это, конечно же, корпус (в прошлой статье про него ничего не было, но он появился почти сразу).
Первый, напечатанный на 3D принтере корпус, был порядка 18–19 мм в высоту. Платы были соединены между собой металлическими стойками. Между платами был расположен аккумулятор. Вариантов корпусов было много. Пробовали делать канавки с обратной стороны лицевой грани. Были разные варианты расположения плат внутри и разные варианты сборки и крепления. Пробовали даже грунтовать и красить.
Рис. 1. Одни из первых корпусов ХО
Чтобы перенести все на одну плату нужно было от чего-то отказываться, в плане компонентов, и что-то придумывать с кнопкой, так как она была штыревая, смотрела вбок и паялась на нижнюю плату. Как выяснилось позже, нет SMD угловых кнопок с длинным толкателем и маленьких габаритов (может я просто плохо искал).
Рис. 2. Одни из вариантов кнопки включения ХО
Я отказался от транзисторов на включение светодиодов и почти всех подтяжек (решив делать их только софтово). Естественно, ушли штыревые разъемы (в том числе и SWD). Когда я разместил на плате все компоненты, то понял что ее не получится развести в одном слое (верхний слой занят разводкой тач-кнопок и светодиодов), поэтому я решил для эксперимента на каждую группу светодиодов (8шт) поставить только один токоограничивающий резистор. Каждая группа «кушает» около 10 мА (китайские светодиоды), при этом яркость у всех одинакова. Отлично. Поставил все компоненты 0603, чтобы упростить плату для ручного монтажа.
Все это упростило трассировку, но все равно получалось не очень. Тогда я переделал схему и вывел все ножки от контроллера веером. Так, чтобы не было пересечений. Да, после этого пришлось переписать софт, но оно того стоило.
Рис. 3. Новая версия платы ХО
Попутно, я думал, что делать с кнопкой. Нашел SMD боковые варианты, но для них нужен был толкатель. Печать его на принтере успехом не увенчалась, и я решил перенести кнопку на нижнюю квадратную плоскость, но так, чтобы она не нажималась, когда игра лежит на столе (за счет винтов, выполняющих роль ножек).
Отличным решением, на одном из этапов, было убрать спикер и добавить вибромотор. Наличие виброотклика при нажатиях, смене игр и т.д., оказалось очень удобным (куда интереснее, чем простые «пики» бузера).
К эстетике я также отнесу и сам игровой функционал. Только игра крестики-нолики с искусственным интеллектом и соперником — это очень мало. Тогда мы с коллегами придумали еще несколько игр. Ниже я приведу кусочек инструкции, где расписаны все почти 9 игр.
Выбор игры происходит с помощью нажатия и удержания пальца на одной из клеток. После того, как в нижнем ряду по очереди загорятся все три крестика, и Вы почувствуйте виброотклик — выбор игры сделан.
- Крестики-нолики с искусственным интеллектом 1 (далее ИИ). Нажимайте на поля и ждите ход ИИ. Выстройте три крестика в одну линию.
- Крестики-нолики ИИ 2. Нажимайте на поля и ждите ход ИИ. Выстройте три крестика в одну линию. Второй ход ИИ делает произвольно, что усложняет игру.
- Крестики-нолики на двоих. Нажимайте на поля и ждите ход соперника. Выстройте три одинаковые фигуры в одну линию.
- Мемо 1. Аналог знаменитой игры для улучшения памяти. Коснитесь любого поля и запомните картинку. Нажимайте на поля повторяя рисунок. Крестики и нолики появляются по очереди. Картинки постоянно меняются!
- Мемо 2. Необходимо отыскать на полях крестики и после того, как картинка погаснет указать их места. Количество крестиков растет. Очередность не имеет значение.
- Стрелялка. Когда будете готовы, нажмите на любое поле. В верхней части появится крестик. С нижнего ряда необходимо запускать снаряды-нолики, чтобы сбивать крестики. Скорость игры постепенно увеличивается!
- Гонки. Вы едете на зеленом автомобиле и Вам необходимо уворачиваться от красных ящиков-препятствий, которые попадаются на дороге. Скорость игры постепенно увеличивается! (Игра еще дописывается)
- Мемо 3. Очень увлекательная игра даже для взрослых! На полях появляются крестики: сначала один, потом два, и так до девяти (от уровня к уровню). Необходимо нажимать на поля в той же последовательности, в какой появлялись крестики.
- Демо версия игры крестики-нолики. Показывает, как правильно необходимо играть.
Как можно догадаться, на игровом поле 3×3 сложно придумать что-то захватывающее, но в принципе получилось довольно-таки неплохо. Мои дети 3 и 7 лет легко освоили переключение между играми и научились в них играть. В принципе, немного потыкав, можно даже без инструкции догадаться что и как.
Как небольшое дополнение, добавил автоматическое выключение после минуты простоя. Ничего не мудрил, просто с микроконтроллера подаю через диод лог.»1» на микросхему CD4013 — имитируя нажатие кнопки. Работает стабильно.
Себестоимость
Безусловно, все вышеперечисленное довольно серьезно сказалось на себестоимости. Вместо двух плат теперь была только одна. Ушли штыревые разъемы, 18 транзисторов и куча пассива (в основном резисторы), стойки крепления платы стали пластиковые. Чтобы еще снизить себестоимость я начал экспериментировать с аккумуляторами. Для начала я уменьшил емкость до 750 мА. Посадить аккумулятор так и не удалось. Далее я снизил до 500 мА. Снова он у меня так и не сел даже после того, как я игру оставлял включенной и давал играть детям. Размеры и вес аккумулятора, соответственно, уменьшились в три раза. На этом решил пока остановиться, но очень хочется поставить 300 мА.
Я привру совсем немного, если скажу, что себестоимость получилась $10. На самом деле, тут многое зависит от партии, но для 50–100шт эта цифра вполне реальна.
Что получилось
Последнее, что есть на данный момент — это корпус 74×74 мм и толщиной 14,5 мм. Платы заказал черного цвета, корпус распечатал тоже в черном варианте. В руке держать приятно, в кармане игра почти не ощутима, аккумулятор «вечный». Верхняя часть закрывается ПЭТ 1,5 мм, выполненным фрезеровкой (чтобы исключить подплавление краев). Индикация зарядки трехступенчатая, выполнена с помощью зажигания крестиков: один, четыре или восемь по кругу.
Рис. 4. Новая плата в корпусе ХО
На фотографии не получается хорошо заснять светодиоды. На самом деле смотрится весьма хорошо.
Что хочется изменить
На данный момент слабое звено — это корпус. Не лучший вариант печатать корпус на принтере. Это мало того, что долго, так еще и не очень красиво. Конечно, штучный образец можно вышкурить и покрасить, но это все сложно и удвоит себестоимость.
Рассматривал литье в силикон, но по видео так и не понял подойдет ли мне такой вариант. В этом случае на корпусе останутся «литки», которые скрыть можно только покраской, а это снова усложнение.
Рис. 5. Игра ХО
Рис. 6. Игра ХО. Кнопка включения/выключения
Также решил разместить небольшое виде, кому интересно:
Спасибо за внимание и до новых встреч!