Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
, но запатентовать сам поворот… не знаю реально ли. В Берсерке например он есть, называется «закрытие».Как вы будете обрабатывать карты, у которых в тексте написано, что они любого типа, например? Не разумнее было бы сделать функцию bool IsType(string Type)? Или вовсе завести отдельный класс Type и переопределить у него Equal? На нем также можно было бы определить операцию композиции типов и т.д. Я считаю, это хорошая музыка. А в вашей реализации, как минимум, карты на русском и на английском языке будут всегда иметь разные типы.
Как вы планируете обрабатывать сложные абилики, которые срабатывают «по событию»? Понятно, что скорее всего при помощи этих самых событый, но события бывают очень сложными, так что заранее предопределенных событый не напасешься.
Кроме того, на карту может быть помещен жетон, карта может быть разным образом связана с другими картами (за-enchanc’ена или как-то еще, я давно не играл), и должна знать об этих связях, чтобы корректно уметь обработать абилку а-ля «remove all coins from the XXX.
Разберусь когда до этого дойду.
Ну почему, с метапрограммным подходом можно нагенерировать события чуть ли не на все, что может произойти в игре.
Проектировать объектную модель нужно заранее

Программирование Magic: the Gathering — §2 Карта