Я продолжаю периодически играть в игрушку Scrap Mechanic. Теперь до игры дорос младший, так что режемся вдвоём с ним.
Ему, конечно, более интересны “боевые” моменты игры, типа схваток с роботами, охраняющими какие-то ценные артефакты, или же вооружённая борьба против аграрной полиции, внезапно нагрянувшей проверить, а не слишком ли ты много полей засеял?
Ну, а мне интересно создавать всякие механизмы. В игре, например, есть хороший элемент строительства своей базы — можно построить целый дом, обычно из дерева, которое надо сначала добыть, напилив лесу. Я отгрохал ажно трёхэтажный бетонный особняк с вертолётной площадкой на крыше. Возникает вопрос — а как быстрее всего перемещаться между этажами? Лестницы, конечно, есть, но это неинтересно. Надо лифт.
Лифт для двухэтажного здания сделать сделать просто — у него может быть только два состояния: он наверху или он внизу. В качестве управления положением лифта двумя выключателями можно использовать обычный логический элемент XOR; если кнопок надо больше (кнопки вызова внизу и наверху плюс кнопка в кабине лифта) — соединять несколько XOR в каскад, но положений всё равно только два, одного бита вполне хватает.
Сложнее получается, когда положений лифта может быть более двух. Тут уже одним битом не обойтись, и так как у нас три этажа, понадобится два бита. Решается это, разумеется, через триггеры (flip-flop). В обычной жизни триггеры можно сделать на двух элементах NAND, но из-за ограничений игры приходится делать немного сложнее — два элемента NOR и два элемента AND. Строишь необходимое количество триггеров (два в моём случае) и вешаешь на них управление положением лифта. Лифты в игре делаются через гидравлические поршни — например, чтобы с первого этажа добраться на второй, надо полностью выдвинуть два поршня. А чтобы доехать до третьего — четыре. Первые два управляются первым триггером, ещё два — вторым. Комбинируя, получаем разные положения: 00 — поршни полностью втянуты, 01 или 10 — выдвинута половина, 11 — выдвинуты все.
На скриншоте как раз положение триггеров 10 (единица — это верхний левый элемент NOR) — то-есть, лифт на втором этаже.
Когда я был маленький, меня всегда интересовали лифты и их механизмы. Круче всего были лифты в старых зданиях ещё сталинской постройки — там, где в центре лестничного колодца была зарешеченная шахта лифта, а двери надо было открывать и закрывать руками (т.н. распашной лифт):
Круты они были тем, что сквозь решётку было видно механизмы — противовесы, и т.д. Так что закрыл теперь детский гештальт, построив свой 🙂