Настольные игры с годами становятся все более популярными. От классики, такой как Risk и Monopoly, до более сложных и творческих игр, таких как Dead of Winter и Gloomhaven. Но задумывались ли вы когда-нибудь, почему некоторые настольные игры нам легче понять и понять их правила, чем другие? Это потому, что некоторые настольные игры очень похожи на программирование!

Возьмем, к примеру, Magic the Gathering, древнюю ККИ (коллекционную карточную игру), изначально созданную в 1993 году и выпускающую контент по сей день. В Magic the Gathering игроки сражаются друг с другом, используя заранее собранные колоды карт. Подробные правила Magic состоят из более чем 200 страниц и различаются в зависимости от того, в какой формат игры вы играете.

Основная концепция Magic заключается в том, что всякий раз, когда игрок взаимодействует или выполняет действие, например, разыгрывая карту атаки с миньоном, создается временный стек, в который можно добавлять другие действия сверху. Когда в стек больше не добавляются действия или карты, все разрешается сверху вниз, прежде чем игра может продолжиться снова. Эта концепция очень похожа на ту, что используется в компьютерных науках, где стек относится к структуре данных, которая содержит набор операций. Небольшое отличие состоит в том, что в программировании максимальный размер стека может быть ограничен, и может произойти переполнение, если будет добавлено слишком много операций.

Мехи против. Minions — это кооперативная настольная игра, в которой игроки сражаются с миньонами, «программируя» набор действий для своего игрового персонажа. Каждый игрок каждый ход берет набор случайных командных карт и, используя эти карты, программирует свои мехи, помещая их в командную строку в определенном порядке. В основном они похожи на набор инструкций или действий для своего персонажа и пытаются достичь определенных целей. В зависимости от текущего макета их игрового поля потребуются разные подходы, которые сделают игру динамичной и увлекательной с решением проблем.

Аспект решения проблем — это то, с чем все программисты хорошо знакомы и научились осваивать. Концепция добавления, формулирования и создания командной строки в сочетании с последовательным выполнением команд очень похожа на концепцию стека в информатике. Каждое действие разрешается строго и последовательно, и есть предсказуемые результаты, которые можно ожидать, как и в программировании. Каждая карта, механизм и действие, которые вы совершаете, имеют множество вещей, которые вам нужно учитывать, и решений, которые влияют на результаты игры. Я считаю, что в программировании такие решения постоянно принимаются постоянно и сильно влияют на то, как мы подходим к решению проблем. Например: «Должен ли я использовать цикл for или цикл while?» или, возможно, когда мы решаем, какую структуру данных использовать: «был бы здесь вложенный массив лучше, чем хэш?»

Если вам интересны эти типы настольных игр, я бы посоветовал вам попробовать. Вы можете быть удивлены тем сходством, которое эти игры привносят в информатику, и даже могут помочь вам придумать умные идеи и решения, когда вы в следующий раз будете программировать!

Ресурсы