Как играть в тетрис на компьютере
работает на телефоне, управление жестами, можно нормально сыграть, когда выдалась свободная минутка, и ничего устанавливать не нужно.
Работает реальная таблица лучших игроков.
Тетрис — компьютерная игра, изобретённая в СССР Алексеем Пажитновым и представленная общественности 6 июня 1984 года. Идею «Тетриса» ему подсказала купленная им игра в пентамино.
Название игры происходит от количества клеток, из которых состоит каждая фигура.
История
Интерес к фигурам домино, тримино, тетрамино и пентамино в СССР возник благодаря книге С. В. Голомба «Полимино» (издательство «Мир», 1975 год). В частности, пентамино было настолько популярно, что в «Науке и жизни» начиная с 1960-х годов был постоянный раздел, посвящённый составлению фигурок из набора пентамино, а пластмассовые наборы пентамино иногда продавались в магазинах.
«Тетрис» был впервые написан Алексеем Пажитновым в июне 1984 года на компьютере Электроника-60. Работая в ВЦ Академии наук СССР, Пажитнов занимался проблемами искусственного интеллекта и распознавания речи, а для обкатки идей применял головоломки, в том числе и классическое пентамино. Пажитнов пытался автоматизировать укладку пентамино в заданные фигурки. Однако вычислительных мощностей тогдашнего оборудования для вращения пентамино не хватало, приходилось отлаживать на тетрамино, что и определило название игры. В тех опытах и родилась основная идея «Тетриса» — чтобы фигурки падали, а заполненные ряды исчезали.
7 «кирпичиков-тетрамино» тетриса: I, J, L, O, S, T, Z. Для IBM PC игра была переписана на Turbo Pascal 16-летним школьником Вадимом Герасимовым.
Игра быстро распространилась по Москве и далее по всему миру. Несколько месяцев спустя про игру узнал импортёр программного обеспечения из Венгрии — Роберт Стейн. Стейн поехал в Москву, где он встретился с Алексеем Пажитновым, и договорился о лицензии на выпуск игры. По какой-то неизвестной для Стейна причине Пажитнов подарил ему тетрис. Роберт Стейн сразу решил, что игру можно было свободно издавать.
Стейн продал права на «Тетрис» компании Mirrorsoft (и её дочерней компании Spectrum HoloByte), принадлежащей британскому медиа-магнату Роберту Максвеллу. Стейн приехал договариваться о покупке прав у реальных правообладателей спустя несколько месяцев после заключения сделки. Русские отказались продавать Стейну права на «Тетрис» на его условиях. Тем временем две компании Максвелла — британская Mirrorsoft и американская Spectrum Holobyte — выпускают свой вариант «Тетриса». У игры появляются качественные по меркам того времени графика и звук, а также «русский колорит» — в фоновых заставках программы появляются Юрий Гагарин, Матиас Руст, незадолго до этого совершивший посадку своего спортивного самолёта на Красной площади, и другие подобающие случаю персонажи. На глазах рождается сенсация — первая игра из-за «железного занавеса».
Вполне возможно, что о Пажитнове так бы никто и не узнал, если б не пронырливость журналистов CBS, представивших всему миру настоящего автора популярной игры. После показа интервью с Пажитновым позиции Стейна пошатнулись, свои поездки в Москву и безуспешные попытки договориться с советскими организациями он не афишировал.
Пока Стейн тратит попусту время на уговоры руководителей «Электроноргтехники», Spectrum Holobyte и Mirrorsoft на условиях сублицензирования продают права на разработку консольных версий «Тетриса» соответственно фирмам Bullet-Proof Software и Atari Games. При этом первая получает возможность разрабатывать программы только для систем, продающихся на японском рынке. Условия второй гораздо выгоднее — её «зона ответственности» включает Японию и США.
В 1989 году в Nintendo полным ходом идёт разработка карманной игровой приставки Game Boy. Глава американского отделения фирмы Минору Аракава (Minoru Arakawa) убеждает президента Bullet-Proof Software Хенка Роджерса (Henk Rogers) вступить в переговоры со Стейном по поводу возможности разработки игры Тетрис для Game Boy. Тот согласен, однако Стейн не отвечает на попытки войти с ним в контакт. Тогда Роджерс летит в Москву. Чувствуя неладное, следом за ним в столицу СССР отправляется и Стейн. Туда же летит и Кевин Максвелл — сын медиа-магната.
Первым в «Электроноргтехнике» встречают Роджерса. Президент Bullet-Proof Software уже знает Пажитнова и Владимира Похилко, который до того, как присоединиться к разработке компьютерных игр, был профессором психологии МГУ. Роджерс производит благоприятное впечатление на собеседников и заключает контракт, согласно которому его компания теперь может разрабатывать версии «Тетриса» для карманных устройств. После этого он с гордостью демонстрирует своим новоявленным партнерам версию «Тетриса» для Famicom.
Роджерс пытается объяснить природу своих взаимоотношений с Spectrum Holobyte, Mirrorsoft и Tengen — подразделением Atari Games, занимающимся разработкой консольных игр. Ему-то пришлось приобретать права на свой японский «Тетрис» ещё и у Tengen. А та в свою очередь, имея лицензию на разработку программ для Nintendo Entertainment System, сделала специальный чип, позволяющий обходить защитные механизмы Nintendo и создавать картриджи для этой игровой системы фирмам, не являющимся лицензиатами Nintendo. Противоречия между Nintendo и Atari (с Atari Games и Tengen) настолько глубоки, что практически никто не сомневается в длительном судебном противостоянии этих фирм. Разбирательства между Nintendo и Atari продолжались вплоть до 1993 года.
В «Электроноргтехнику» прибывает Кевин Максвелл и там ему продемонстрируют картридж с «Тетрисом» для Famicom. Будучи совершенно неосведомлённым о действиях компании, основанной его отцом, Кевин поначалу отказывается верить своим собеседникам. Однако на картридже явственно видна надпись — Mirrorsoft. Младшему Максвеллу ничего не остаётся, кроме как заявить, что это, по всей вероятности, подделка.
В итоге, к началу 1989 года до полудюжины различных компаний заявили о своих правах на версии «Тетриса» для разных компьютеров, игровых консолей и карманных игровых систем. «ЭЛОРГ» заявила, что эти компании не имеют никаких прав на версии для игровых автоматов, и предоставила эти права компании Atari. Права же на версии для игровых консолей (видеоприставок) и портативных игровых систем, в острой и драматичной конкурентной борьбе с Atari (в которой могли быть замешаны самые высокие лица советского государства) — компании Nintendo. Сумма сделки с Nintendo составила 450 тыс. долларов США, плюс 50 центов с каждого проданного картриджа.
Tengen (подразделение компании Atari, занимающееся программным обеспечением для игровых консолей) выпустила свой вариант игры для консоли Nintendo NES, игнорируя соглашение, и многие игроки сочли версию Tengen лучше версии Nintendo. Игру назвали TETЯIS. Но Nintendo подала на Tengen в суд и выиграла. Всего через несколько месяцев после выпуска TETЯIS игру пришлось отозвать, после продажи около 50 тысяч экземпляров.
В марте 1989 года Роджерс вновь в Москве, куда следом за ним прилетают Аракава и главный исполнительный директор американского отделения Nintendo Ховард Линкольн (Howard Lincoln). В «Электроноргтехнике» их заверяют, что если тема «Тетриса» будет в судебном разбирательстве между Atari и Nintendo, то в Nintendo могут рассчитывать на «помощь Москвы». Встреча завершается подписанием контракта, сумма которого различными источниками оценивается от 3 до 5 млн дол.
Nintendo официально уведомляет Atari Games, что у той нет прав на легальный выпуск «Тетриса» для Nintendo Entertainment System. Лишь две недели спустя Tengen подаст заявку на получение авторских прав на этот продукт.
Ховард Линкольн (Howard Lincoln) ещё раз прилетает в Москву и убеждается в том, что «Электроноргтехника» не желает уступать властным структурам. В мае выходит «Тетрис» для Nintendo Entertainment System от Tengen, играть в него начинают все больше. В июне начинаются слушания по делу Nintendo против Tengen и Atari Games. 15 июня судья Ферн Смит (Fern Smith) принимает решение в пользу Nintendo — Tengen запрещены производство и продажа «Тетриса». Проходит ещё немного времени, и Nintendo представляет Game Boy, в комплект поставки которого входит «Тетрис».
Nintendo от продажи игры получила очень неплохие прибыли, но сам Алексей Пажитнов смог воспользоваться плодами своего детища только в 1996 году, когда истёк срок первоначальной лицензии, и он начал получать первые (весьма небольшие) отчисления от продаж.
В 1996 году он с Хенком Роджерсом (англ. Henk Rogers) создал компании The Tetris Company LLC и Blue Planet Software, пытаясь получить прибыль от бренда Tetris. The Tetris Company LLC (TTC) зарегистрировала слово Tetris как торговую марку. С тех пор несколько компаний купили у TTC лицензию на торговую марку, но законность игр тетрамино, которые не используют название Tetris, не оспаривалась в суде. По американским законам, игру нельзя защитить авторским правом (только запатентовать), поэтому основным имуществом компании является торговая марка Tetris. Несмотря на это, TTC преследует клоны игры под именами, непохожими на Tetris. В мае 2010 года юрист TTC послал письмо в Google с требованием убрать с рынка Android Market все 35 клонов данной игры, хотя их имена не схожи с именем «Tetris».
В 1996 году Алексей Пажитнов устроился на работу в Microsoft, где под его руководством был выпущен набор головоломок Pandora’s Box. Сейчас непосредственно программированием Алексей Пажитнов уже давно не занимается, он работал в подразделении Microsoft разработчиком компьютерных игр с 1996 по 2005 год.
Однако, 29 июня 2010 года, в интервью журналистам одного из геймерских порталов, Алексей Пажитнов сказал, что последние десять лет он работал над многопользовательским режимом для своего детища. Но самое интересное, что он ещё не закончил.
Он сказал, что главная проблема кроется в динамичности Тетриса. На последних уровнях всё ваше внимание сосредоточено на игре, любое неосторожное движение и вы проиграете. Так что у вас просто не будет времени смотреть, что делают другие геймеры.
Музыка
Наиболее известная мелодия, ассоциирующаяся на Западе с «Тетрисом» — это русская песня «Коробейники» («Ой, полным-полна моя коробушка…»). На эту мелодию многие западные музыкальные группы и исполнители делали ремиксы и свои аранжировки, напирая именно на то, что эта мелодия из знаменитого «Тетриса». Хотя есть немало диджеев, которые сделали ремикс мелодии, обозначив «tetris remix», но не опубликовав в альбомах.
В некоторых версиях одной из мелодий является «Калинка» Ивана Ларионова.
Теоретические проблемы
Была опубликована статья, автор которой доказывает, что даже если бы игрок реагировал мгновенно и всегда принимал правильные решения, то и в этом случае он бы в конечном счёте проиграл. Проблемой являются S- и Z-образные фигурки. Достаточно большое количество S-фигурок заставит игрока оставить дырку в правом нижнем углу. Достаточно большое количество Z-фигурок после этого заставит игрока оставить дырку в левом углу следующего ряда, не заполнив предыдущую дырку. Если после этого опять выпадет достаточно много S-фигурок, достаточно много Z-фигурок, и так много раз, заполнится (с дырками по краям) всё поле, и для следующей фигурки места не останется. Если генератор случайных чисел идеален и выдает дискретное равномерное распределение, любая (в том числе и такая) комбинация рано или поздно выпадет.
Однако среднее время, через которое выпадет такая комбинация, огромно и превышает время существования Вселенной. Тем не менее, не исключено, что существует какая-то другая, более трудная для доказательства причина, по которой идеальный игрок должен проиграть намного раньше указанной верхней границы.
Некоторые задачи, возникающие перед игроком в ходе игры, являются NP-полными.
От автора этого проекта
Так сложилось, что я программист и большую часть времени я занимаюсь скучной и однообразной работой, но однажды захотелось мне сделать свой собственный тетрис, который работал бы в браузере. Ещё будучи студентом, я написал свой тетрис на turbo pascal (в лучших традициях) с единственным желанием впечатлить преподов. Не знаю, удалось ли мне хоть кого-то удивить, но мой первый тетрис работал вполне сносно на 286-х и это было приятно. Мне пришлось довольно сильно оптимизировать программу, она работала в текстовом режиме. Потом, спустя пару лет я портировал свой первый тетрис на Borland Delphi, теперь он запускался под windows и уже работал в графическом режиме, но мне быстро надоело, забросил.
И уже спустя 5-7 лет, когда я работал в одной крупной аутсорсинговой конторе мне что-то захотелось вновь заняться тетрисом, но уже более профессионально. Я изучал вопрос довольно основательно, читал разные статьи о самой игре, интервью с Пажитновым, я смотрел код почти всех, более или менее нормальных, тетрисов из gitHub. Спустя пару дней был готов первый прототип, мне хотелось в своем тетрисе сочетать лучшие наработки последних десятилетий и при этом не стать игрой из appStore.
Оказалось, что есть некий набор правил Tetris Guideline, которым должен соответствовать хороший тетрис. Я штудировал этот гайдлайн довольно основательно и в результате разработал набор требований для будущей игры. В общем и целом, я покрыл все обязательные и почти все рекомендуемые требования из спецификации Tetris Guideline.
В последнее время я все больше задумываюсь над правовыми вопросами и лицензированием ПО, мне хотелось не просто иметь приятную музыку в игре, но она должна была быть легальной и оригинальной. К счастью с дизайном, музыкой и звуками мне помогали мои друзья, которым я очень благодарен. Хостинг и деплой дались мне довольно легко, удалось скрестить мою существующую инфраструктуру у одного провайдера с различными сервисами, которые позволяют вести полный цикл разработки и поддержки ресурса удаленно и распределено.
С раскруткой и оптимизацией дела обстоят хуже всего. С начала я закупил рекламы на adWords и на Яндексе, но деньги быстро кончились, а эффект был крайне скромным. Потом я под забросил проект примерно на полгода, посещаемость падала и была низкой. Но недавно я обратил внимание, что посещаемость неплохо так скакнула в верх и я снова решил взяться за проект, внести немного правок по свежим идеям.
На текущий момент этот тетрис именно такой, как я хотел на 90 процентов. Технологически меня он уже давно не устраивает, но поднимать новую инфраструктуру и переписывать с нуля пока не представляется возможным (жена, дети, работа). Тем не менее, мелкие но приятные доработки возможно будут появляться. Новый дизайн уже есть и он хорошо оптимизирован под различные устройства, но натягивать его на текущий движок не рационально.
Про деньги
Этот проект мне не принес вообще никаких денег и не планировалось. Дизайн и музыка были сделаны по дружбе за ноль денег. Неплохо бы разместить донат кнопку, но сейчас такая слабая посещаемость, что смысла особого нет. Если вы читаете эти строки я сильно удивлен, я писал это больше для себя и для роботов
Надеюсь вам понравилась эта игра, я делал в надеже на ваш интерес.
Дополнение от ноября 2019 года.
Ситуация с тетрисом несколько изменилась, я заметил, что посещаемость начала не плохо так расти без моего прямого участия, но обо всём по порядку.
В июле 2018 я заметил, что посещаемость была примерно 15-20 посетителей в день, а тут вдруг она скакнула до 100. Это заставило меня по новому взглянуть на проект, я лишился замыленности взгляда и с новыми силами закрыл несколько серьезных проблем с оптимизацией сайта под поисковики, отключил механизм определения языка пользователя, добавил черный список пользователей в самом простом его виде. Можно сказать, причесал сайт для поисковиков и пользователей, закончил в начале августа 2018.
К концу 18 года, начали возникать проблемы с отображение таблицы результатов игроков, записей стало так много, что они сильно били по производительности фронта. Пришлось переписывать все, что касается базы данных, в том числе и backend. Коллеги помогли с sql запросами, получилось быстро и удобно, появился уже нормальный черный список с отправкой уведомлений на почту и банном по ссылке из письма. Уже к середине февраля 2019 года все работало на новой базе, данные удалось полностью перенести без потерь.
Начал разрабатывать систему валидации результатов, несколько недель обдумывал подход к этой задаче и придумал. Параллельно перекупил домен tetris.su и форкнул туда проект. Форк зачистил от всего лишнего и начал на нем обкатывать систему валидации, но интерес как-то угас.
К концу 2019 года на меня вышел человек, который готов был купить весь проект за нормальные деньги, я отказался.
Посещаемость продолжает расти и снова вылезает проблема с таблицей результатов, даже оптимизированный список результатов сейчас занимает 2.1Мб и содержит 11000 записей, как бы и не много, но уже заметно, что загрузка стала дольше. А ещё нагрузка на БД вызывает проблемы у хостера, надо что-то предпринять в ближайшее время или меня забаннят.
На данный момент позиции в Яндексе очень хорошие, в гугле пока не очень, но трафик растет, сейчас около 1000 пользователей в день.
Уже напрашивается реклама но я пока боюсь спугнуть лояльную аудиторию, надо доделать валидацию очков, сделать нормальную базу, сбросить результаты и уже потом рекламу.
И снова здравствуйте, друзья! Продолжаю просветительскую деятельность на тему классического тетриса. Как и обещал, сегодня будет пост, посвященный способу управления под названием DAS. Начну с небольшого отступления.
В комментариях к прошлым постам проскакивали заявления, что мол тетрис детская игра, чего в нее играть (@usr5516, спасибо за критику, дружище!))). По своему опыту могу сказать, что самыми интересными для меня играми становятся те, которые не обладают какими-то хитрыми правилами, но при этом имеют тонны различных нюансов и скрытых стратегий: тетрис, шахматы, покер, брак. Они конечно в красочности и экшэне уступают современным играм (против которых я совершенно ничего не имею), но своих преданных игроков будут иметь всегда. Ну а теперь присаживайтесь поудобней, я расскажу вам про DAS.
DAS- это аббревиатура от словосочетания Delayed Auto Shift, которое на русский вольно можно перевести как "отсроченное автоматическое перемещение". Явление это не уникальное, т.к. встречается далеко не только в тетрисе. Ну например: открываете вы через проводник форточек папку с кучей фотографий и начинаете ее листать не скроллом, а нажатием стрелок на "бегунке" проводника. Если эту стрелку зажать, то в момент нажатия содержимое окна сразу перемотается на одну строку, затем будет короткая пауза, и после нее содержимое будет перематываться уже без остановки пока нажатие не будет прекращено. Вот эта пауза и называется Delayed Auto Shift (DAS). Сделана она для защити от случайного второго нажатия. Теперь посмотрим как манипулирование DAS помогает игрокам в Classic NES Tetris.
На картинке видим реализацию DAS, которую я описал выше. Игрок на контроллере зажимает "вправо", первое перемещение происходит мгновенно (т.е. за 1 фрэйм), далее следует пауза в 16!! фреймов и после него начинается автоматическое перемещение по сектору за 6 фрэймов. На ранних уровнях игры это не имеет большого значения. Ну например на уровне "00" в версии игры для региона NTSC тетромино опускается на 1 ряд за 48 фрэймов. Для региона PAL эта цифра меньше. Но т.к. мировой чемпионат проводится именно на версии NTSC, рассматривать будем ее. Так вот. В один прекрасный момент один умный человек обратил внимание, что есть пару способ управлять (читай отключать) DAS, что давало огромное преимущество при игре на более высоких уровнях. Так появился термин DAS Charge.
Самый простой (ну для меня по крайней мере) способ называется WALL Charge. Переведем это как "зарядка от стены". Суть: если тетромино касается стенок стакана (игрового поля) или самого стэка- нажми стрелку навстречу этой стене и твой DAS зарядится! На картинке: L-piece (а вот так называется эта тетроминошка) уже опустилась в обнизку на стэке и не имеет возможности перемещаться по-горизонтали. Упри ее в стену, пока она не зафиксировалась! Если с этого момента стрелку "вправо" не отпускать, то следующая упавшая тетромино будет перемещаться в стакане минуя DAS, как на второй картинке. При таком способе управления игрок уже при появлении в окне превью следующего тетромино должен знать куда он его положит. Понимаете? О тетроминошке, которая падает сейчас вы уже подумали заранее и приняли меры, а в то время пока она падает, вы думаете о следующей и принимаете меры к ней) На высоких уровнях это архи сложно, но не менее интересно!
Но бывает и такое, что WALL Charge сделать невозможно, ну или вы прощелкали момент и не успели. Тогда на помощь приходит Entry Delay, переведем это как "входная отсрочка". Разберем это явление на том же уровне "00". Как я уже говорил, на этой скорости тетромино опускается на один горизонтальный ряд за 48 фрэймов и фиксация тетромино на дне стэка тоже занимает 48 фрэймов (то самое время на WALL Charge ). Но те же 48 фрэймов у игрока имеются при появлении тетроминошки наверху стакана и до начала ее падения. И если игрок именно в этом промежутке зажмет стрелку, то перемещение при падении будет идти минуя DAS. И вот это вот явление рождает наверное самую сложную технику игры, имя которой Skill Stopping.
Суть техники: во время Entry Delay игрок зажатием стрелки перемещает тетромино туда, куда ему надо (в данном случае J-piece должен вписаться в крайнее правое положение) и резко отпускат стрелку еще до того, как начнется падение. Это ооочень сложно, особенно когда тетромино должно упасть куда-нибудь в середину стэка. Немного передержал\ не додержал и алес!
Ну и крайняя (но не по значению) фишечка в арсенале DAS-игрока это Last Second Tap или Quick Tap.
А вот про-игроки используют в своей игре все эти техники! Сейчас техника манипуляции DAS-ом не самая популярная среди игроков, она уступила место технике Hypertap (скаросное нажатие на стрели, таптаптап), но все олдскульные мастера остались себе верны. Ведь помимо управления сам стэкинг (варианты расположения тетромино в стакане) - это очень важная часть игры!
Ну и под занавес, когда вы знаете все тонкости игры предлагаю посмотреть эпичную битву двух ассов разных школ тетриса.
З.Ы. данное видео есть в переводе Юрия Профессионала. Спасибо ему огромное за его деятельность по продвижению классического тетриса в русскоязычные массы и за юмор! Но если вы немного понимаете по-зарубежному - смотрите так, ведущие очень грамотно объясняют происходящее.
Однажды, просматривая объявления на Avito, я наткнулся на очень любопытную вещь — блинкерное табло или flip-dot display по-английски. Такие табло используются для отображения информации в аэропортах, вокзалах, стадионах или маршрутоуказателях на общественном транспорте.
Я подумал, что с дисплеем такого типа можно сделать много всего интересного.
Где был установлен мой экран, можно только догадываться по остатку надписи (“АГАЗИН”). Возможно, это был информационный стенд на вокзале или остановке ОТ — пишите ваши идеи в комментариях.
Экран представлял собой матрицу ячеек размером 7 строк на 30 столбцов. Каждая ячейка содержала круглую, вращающуюся двухцветную пластину и светодиод зеленого свечения. На плате имелось некоторое количество логических элементов серии 74HCххx и других микросхем, которых, как выяснилось позже, было почти достаточно для управления экраном через нехитрый последовательный интерфейс.
После покупки я потратил немного времени на поиски информации о том, как работать с такими экранами, учитывая, что в моем распоряжении была только часть, непосредственно выводящая изображение, а обычно присутствует еще и контроллер, которым можно управлять клавиатурой либо через порт UART софтом с PC.
По надписям на плате установить принадлежность к производителю не удалось, но, возможно, я не сильно и старался, т. к. интереснее было самому разобраться, как оно работает, нарисовать схему устройства и разработать модуль сопряжения с типовым микроконтроллером.
Но сначала надо было поставить себе конкретную цель, для чего можно применить этот экран в быту. Первой идеей были часы с отображением расширенной информации о погоде на улице и дома, времени, даты, коротких мотивирующих посланий ;) и т. д. Потом я подумал, что, если повернуть экран на 90 о , он здорово напоминает стакан для Тетриса, поэтому было решено сделать Тетрис, а дальше будет видно.
Как же работают электромеханические экраны
Очень просто: каждая ячейка экрана (флажок) состоит из диска — плоского постоянного магнита, окрашенного с одной стороны в желтый, а с другой — в черный цвет, и электромагнита, расположенного под диском. При подаче электрического импульса на катушку электромагнита флажок переворачивается и, что важно, фиксируется в одном положении. При смене направления тока и подачи повторного импульса флажок поворачивается и фиксируется другой стороной. Для переключения достаточно импульса длительностью в 1 миллисекунду, напряжением 12 вольт.
Сопротивление катушки электромагнита примерно равно 18 Ом.
Устройство ячейки, источник: Eldi datasheet | Как происходит поворот диска, источник: Flip-Disc Display |
Для удобства управления катушки через два диода объединены в матрицу строк и столбцов. Для переключения любой точки экрана нужно активировать источник тока (current source) на строке и сток тока (current sink) на ряду, на пересечении которых находится катушка электромагнита или, наоборот, для переключения в другую сторону. По сути, это аналогично управлению двигателями постоянного тока через Н-мост, только в импульсном режиме.
С тем, как управлять флажками в теории, мы разобрались. Пора переходить к практический реализации.
Реверс-инжиниринг экрана
Вооружившись мультиметром и Kicad, я стал перерисовывать схему экрана, начав с управления светодиодами. Оказалось, что эта часть самодостаточна, и при подаче питания и управляющих сигналов можно зажечь любой светодиод в любом ряду экрана через довольно простой интерфейс. В каждый момент времени активной может быть только одна строка, поэтому вывод изображения должен быть динамическим.
Таким образом, для управления светодиодами нужно выбрать строку экрана, подав ее номер на вход дешифратора, потом загрузить 32 бита данных через SERIAL и CLOCK входы первого LED-драйвера. Затем подать лог. “1” на вход LATCH, и соответствующие светодиоды загорятся на время удержания LATCH в “1”.
Чтобы поморгать светодиодами, я использовал лежащую под рукой arduino-совместимую плату Teensy 3.5. Пример кода управления светодиодами можно найти на GitHub
Вторая часть схемы, ответственная за управление блинкерами, немного сложнее.
Силовая часть управления колонками состоит из пары микросхем источника/стока тока (current source/sink), выходы которых соединены через защитные диоды с первым выводом каждой катушки в колонке. В качестве источника тока использована микросхема Toshiba TBD62783, а в качестве стока — любимая многими ULN2803 от TI. Вторые выводы катушек объединены в строки и подключены к разъему на плате экрана. По всей видимости, это было сделано для того, чтобы вынести управление строками в отдельный модуль, так как несколько экранов могут объединяться в один длинный экран. Однако немного непонятно, почему для управления светодиодами разработчики разместили все необходимые компоненты на каждой плате экрана.
Таким образом, для выбора конкретной колонки нужно подать ее номер (0-7) в группе на шину COL_A0-A2, а затем активировать выходы конкретной 74HC238 путем подачи ее номера на входы COL_EN_A0-A2 общего дешифратора. Причем вход A0 можно использовать как признак источник/сток, а оставшиеся 2 бита — как номер группы (0-3).
После анализа схемы я понял, что поморгать флажками без помощи Kicad и паяльника, не получится и приступил к созданию модуля выбора строк и сопряжения.
Модуль адаптера и управление строками
Для упрощения конструкции я решил повторить реализацию выбора колонки и поместил на схему TBD62783 и ULN2803 в паре с дешифраторами 74HC238 для выбора нужной строки, а также одну микросхему логики 74HC00 (4хNAND) для четкого разделения режимов SET, RESET и входа PULSE, непосредственно активирующего подачу напряжения на выбранный электромагнит. Для экономии выводов микроконтроллера было решено подключить сигналы выбора строк и столбцов к выходам одного сдвигового регистра.
В итоге для управления флажком нужно:
- послать и зафиксировать его координаты в последовательном коде через SERIAL/CLOCK/LATCH
- выбрать желаемое состояние SET/RESET
- на короткое время активировать PULSE
Первая версия схемы без сдвигового регистра была собрана на беспаечной макетной плате. После проверки и небольшого волнения, что все сгорит, я включил питание и подал вручную импульс PULSE быстрым нажатием на кнопку. Ток, протекающий через катушку электромагнита, был на всякий случай ограничен на лабораторном источнике питания. Флажок переключился успешно, и при изменении уровня SET/RESET, переключился обратно. “Это успех”, ‒ подумал я и начал переносить схему на обычную макетную плату, используя любимый МГТФ-0.07 и одножильный kynar-wire для шин питания/земли.
Для подключения к экрану через 50-контактный разъем на плате нужно было задействовать 22 контакта + питание, поэтому возиться с отдельными проводками не хотелось. Напрашивалось использование плоского шлейфа, как для IDE или, скорее, старых SCSI устройств.
Немного гугления навело меня на специальный инструмент для обжима IDC коннекторов, который было решено незамедлительно купить: Кримпер ProsKit 6PK-214 для IDC коннекторов. Потренировавшись на небольших коннекторах, я с первого раза сделал себе 20-сантиметровый шлейф с IDC-50F разъемами на концах.
Пишем управляющую программу
Как я упоминал выше, в качестве управляющего контроллера использовался TEENSY 3.5, средой разработки для которого является Arduino IDE, поэтому программа была написана на arduino диалекте C.
Основная функция изменения состояния точки экранаЯ провел несколько экспериментов, чтобы определить оптимальное напряжение источника питания и время подачи импульса. Получилось, что 12В и 1мс достаточно для стабильной фиксации флажка в одном из положений.
После тестовых заливок одним цветом я заметил, что один «пиксель» битый и не переворачивается. Замер мультиметром сопротивления катушки показал несколько мегаом, а детальный осмотр выявил, что один вывод оторвался. Очень повезло, что нерабочий «пиксель» был с краю экрана, поэтому мне удалось припаять провод. Проблема была решена.
Вот что получилось после первых экспериментов с заливками и выводом текста:
Тетрис
Написать реализацию Тетриса на C оказалось проще, чем я думал. Спасибо Javier López и его руководству Tetris tutorial in C++ for beginners. Я переписал основные функции так, как я их понял, и адаптировал код к особенностям моего экрана (отсутствие границ и низкое разрешение). Не буду утомлять подробностями работы, в руководстве все подробно описано.
Для управления использовался модуль аналогового джойстика, поэтому пришлось написать функцию для преобразования значений на выходе АЦП в цифровые константы. Тут возникла сложность с тем, чтобы, с одной стороны, не допустить ложных срабатываний, а с другой — обеспечить правильный геймплей. Если положение джойстика не меняется после очередного считывания состояния, добавляется задержка.
Поиграв минут 10, я понял, что мне скучно, потому что скорость падения фигур не меняется и счет никак не отображается. Отсутствует элемент соревнования.
Выводить счет флажками было некрасиво из-за нехватки места на экране, так что было решено задействовать светодиоды для создания альтернативной плоскости вывода информации. Я нашел в интернете битовое представление шрифта 3x5 для цифр от 0 до 9 и написал функцию отображения счета по количеству убранных линий. Для пущей красоты решил добавить моргание заполненной строки при ее исчезновении.
Динамический характер отображения подтолкнул к идее вызывать функцию обновления LED-части экрана в таймерном прерывании. Частота прерывания и время удержания строки светодиодов в активном состоянии определяют яркость свечения.
Еще я сделал так, что скорость падения фигурок тетрамино увеличивается по мере очищения линий. В первой версии фигурки смещались на одну строку вниз каждые 200 мсек. Если отнимать от этого числа 40 мсек каждые 10 удаленных линий, то темп игры сильно ускоряется, и появляется интерес. Мой рекорд 38 линий!
Тот редкий случай, когда вертикальное видео подходит как нельзя лучше.
Если у вас есть идей, что еще можно сделать с таким экраном, пишите, пожалуйста, в комментарии.
Отлично провести свободные минуты или даже часы с пользой для развития внимания, реакции и сообразительности поможет простая бесплатная игра Русский Классический Тетрис на компьютер .
В отличии от онлайн версий этой популярной развивающей игры родом из 80-х годов прошлого столетия, описанная ниже полностью автономна и совсем не требует подключения к сети Интернет.
Бесплатный Классический Тетрис для компьютера
Отыскал эту игру в цифровой паутине уже давно, а вот описать и порекомендовать на сайте руки дошли только сейчас. Как оказалось, найти безопасный Русский Классический Тетрис на компьютер бесплатно, без вирусов и смс-разводов очень даже не просто.
Конечно, вариант не идеальный, со спорным интерфейсом и без возможности полноценно развернуть окно во весь экран, но зато рабочий и портативный (что это значит).
Без комментариев, как говорят. 🙂
- клик левой кнопкой мыши молниеносно спустит фигуру в самый низ
- клик правой кнопкой мыши поворачивает блок
- простое перемещение курсора в окне компьютерного тетриса двигает падающие элементы по горизонтали
Для общедоступности разместил файл с игрой на Google Диске.
ПОЛЕЗНОЕ ВИДЕО
Такая бесплатная игра Русский Классический Тетрис на компьютер. По популярности ей проигрывают лишь компьютерные нарды и то, это еще вопрос 😉 .
До новых полезных компьютерных программ и советов.
Дата публикации (обновления): 20.03.2021
Я только обозреваю программы!
Любые претензии - к их производителям!
Все комментарии проходят модерацию
Мой личный топ программ
Интересное для компьютера
Обязательный софт для ПК
Программы для Windows 10
Всё для сети Интернет
SSD-накопитель для ПК
Полезные сайты и сервисы
Компьютерные советы
Просто хорошие программы
Украшаем систему Windows
Здоровье и компьютер
Программы для зрения
Программы школьникам
Оптимизируем мышку
Специально для клавиатуры
Интересные калькуляторы
Менеджеры файлов
Анонимность личности
Мониторинг ПК и Windows
Выбор комплектующих ПК
Утилиты для сети WI-FI
Читалки книг и журналов
Дефрагментация дисков
Оптимизация реестра
Читайте также: