Иногда, если нарисовать эскиз, то он помогает лучше понять замысел, поэтому я начну с него. На рис. 4.108 сигнал от каждой кнопки проходит через воображаемый компонент, который я буду называть «блокиратором кнопки», активируемый кнопкой другого человека. Я пока не знаю наверняка, каким будет этот блокиратор кнопки и как он станет действовать, но сразу ясно, что при нажатии кнопки одним из игроков, он заблокирует кнопку другого игрока.
Теперь, когда передо мной эскиз, я сразу вижу проблему. Если потребуется расширить схему для трех игроков, она усложнится, потому что каждый игрок должен активировать блокираторы кнопок двух оппонентов, а если игроков станет четыре, то каждый должен активировать блокираторы кнопок трех оппонентов. Взаимосвязи существенно усложнятся (рис. 4.109).
Каждый раз, когда я вижу подобные сложности, то предполагаю, что существует лучший альтернативный способ.
К тому же, есть еще одна неприятность. После того как игрок снимает палец с кнопки, кнопки других игроков снова разблокируются. Это наталкивает на мысль о том, что мне понадобится триггер с фиксацией (как и в экспериментах 15, 19 и 21). Его задачей станет поддержание сигнала от кнопки первого игрока и продолжение блокирования других игроков, даже после того как первый игрок отпустит кнопку.
Теперь все кажется еще сложнее. Но погодите. Если кнопка победителя запускает триггер, он поддерживает цепь победителя под напряжением, то кнопка победителя становится ненужной. Таким образом, триггер может блокировать все кнопки. Это существенно упрощает дело. Можно резюмировать сказанное в виде такой последовательности событий:
• Первый игрок нажимает кнопку.
• Его сигнал блокируется.
• Зафиксированный сигнал передается далее и блокирует все кнопки.
Новый набросок (рис. 4.110) поясняет эту идею. Теперь схема стала модульной, и ее можно расширять почти на любое количество игроков, просто добавив больше модулей без усложнения основной цепи.
Есть, однако, одно серьезное упущение: необходим переключатель сброса, который возвращает систему в исходное состояние после того, как игроки нажмут кнопки и увидят кто победил. Также мне нужен способ предотвратить преждевременное нажатие кнопки до того, как ведущий закончит задавать вопрос. Возможно, я смогу скомбинировать эти функции в одном из переключателей, который будет под управлением ведущего.
Посмотрите на рис. 4.111. В положении «Сброс» переключатель ведущего может сбросить систему и отключить питание кнопок. В положении «Игра» переключатель прекращает удерживать систему в режиме сброса и подает питание на кнопки. Я вернулся к демонстрации версии для двух игроков, чтобы сделать все как можно проще, но концепцию по-прежнему легко расширить.
Теперь я должен решить логическую проблему. В том виде, как нарисована схема, на ней все соединено вместе. Я показал направление сигналов стрелками, но пока не знаю, каким образом остановить прохождение сигнала в неправильном направлении. Если я не решу эту проблему, сигнал любого игрока будет зажигать оба светодиода. Как можно избежать этого?
Я мог бы поставить диоды в идущие «наверх» провода, чтобы ток не мог спускаться «вниз». Но у меня есть более элегантная идея: добавить элемент ИЛИ, потому что его входы электрически отделены друг от друга. Предлагаемое решение продемонстрировано на рис. 4.112.
Базовый логический элемент ИЛИ имеет только два входа. Ограничит ли это меня в увеличении количества игроков? Нет, поскольку можно купить элемент ИЛИ с тремя, четырьмя или даже с восьмью входами. Если хотя бы на одном из них окажется высокий уровень, то и на выходе будет высокий уровень. Если игроков меньше, чем входов, вы заземляете неиспользуемые входы и игнорируете их.
Теперь у меня есть четкое представление о том, каким должен быть блокиратор кнопки. Я думаю, что это должен быть еще один логический элемент. Он действует так: «Если есть только один входной сигнал, от кнопки, я его пропущу. Но если будут и другие входные сигналы, я не позволю им пройти».