Довольно давно я не публиковал никаких новостей. И, говоря откровенно, многие категории новостей я не выпускал не просто долго, а очень-очень долго. Сегодня я постараюсь исправить эту ошибку, разобрав один интересный механизм собственного «производства» — игру «Камень, ножницы, бумага» на классических элементах (кстати говоря, моя работа прекрасно себя чувствует на сервере — никаких нареканий нет). Сделал я её довольно давно, по личным причинам, когда хотел построить указанную схему на сервере, где некоторое время играл. В своё время я опубликовал ссылку на карту с этой игрой в группе Кронда, где мою работу неплохо оценили. Настало время рассмотреть предложенный механизм и в рамках данного сайта. Приступим!
Для начала было необходимо определиться с тем, на каком принципе построить механизм. Проанализировав ситуацию, я пришёл к нескольким довольно интересным вариантам. Предлагаю их рассмотреть:
Версия на дешифровщике. Игроки выбирают свой вариант, он запоминается, после чего система определения победителя выдаёт результат на основе просчёта всех комбинаций выигрыша, проигрыша и ничьей;
Версия на компараторах. Игроки выбирают свой вариант, он запоминается, после чего система определения победителя выдаёт результат на основе сравнения мощности сигналов с помощью компаратора.
Сейчас наиболее перспективным мне кажется второй вариант — очевидно, что он будет меньше по размерам, поскольку не придётся просчитывать абсолютно все комбинации. Но в момент создания механизма я выбрал первый вариант — он был самым очевидным, он работал даже на самых старых версиях игры. Потому я начал работать именно в классическом направлении и приступил к постройке механизма.
Для начала нужно было просчитать все возможные варианты для одной партии. Я довольно быстро составил сводную таблицу, с которой предлагаю Вам ознакомиться:
№ варианта
Выбор I игрока
Выбор II игрока
Победа
К
Н
Б
К
Н
Б
I
II
-
1
+
+
+
2
+
+
+
3
+
+
+
4
+
+
+
5
+
+
+
6
+
+
+
7
+
+
+
8
+
+
+
9
+
+
+
«К» — камень; «Н» — ножницы; «Б» — бумага; «I» — первый игрок; «II» — второй игрок; «-» — ничья; «+» — выбор или результат.
Итак, таблица составлена. Теперь необходимо приступить непосредственно к реализации механизма. Его можно разбить на несколько составных частей, каждую из которых я постараюсь максимально подробно разобрать:
Передача выбора игроков в систему запоминания. Некоторое количество проводящих путей, цель которых — довести сигнал выбора игроков до ячейки памяти.
Система запоминания выбора игроков. Несколько ячеек памяти (по одной на каждый возможный выбор каждого игрока), которые запоминают текущий выбор игроков для дальнейшей обработки.
Система защиты от изменения выбора. После активации как минимум одной ячейки памяти у данного игрока, дополнительная ячейка памяти запоминает совершение выбора и блокирует передачу нового выбора данного игрока в систему запоминания.
Передача выбора игроков в систему расчёта победителя. Некоторое количество проводящих путей, цель которых — довести сигнал запомненного выбора игроков до дешифровщика.
Система расчёта победителя в партии. Тот самый дешифровщик. Имеется число линий по числу возможных комбинаций решений игроков. Каждая линия — расшифровщик. Если подано два сигнала так, что оба красных факела данного расшифровщика погасли, дорожка перестаёт гореть и таким образом активируется передача победителя на панель результатов.
Передача победителя на панель результатов. Некоторое количество проводящих путей, цель которых — довести сигнал победителя до панели результатов. Проводящие пути и линии дешифровщика сгруппированы так, чтобы разводка была максимально простой.
Система сброса предыдущего выбора игроков. Некоторое количество проводящих путей, цель которых — довести сигнал сброса (соответствующая кнопка расположена на панели управления у каждого игрока) до ячеек памяти, запоминавших выбор игроков и то, что этот выбор был ранее совершён.
Система звукового оповещения на разных этапах игры. Несколько нотных блоков, которые уведомляют игроков о том или ином этапе обработки данных.
Вот, собственно говоря, и всё. Дополнительно отмечу, что для простоты понимания схемы различные её части я выполнил с помощью разных цветов шерсти. Надеюсь, что так разобраться в устройстве механизма будет максимально просто. Предлагаю также посмотреть видео с разбором механизма: