Я пытаюсь написать здесь своего рода карточную игру, в некотором роде похожую на Magic The Gathering или Yu-Gi-Oh! карточная игра.
Для тех из вас, кто не знаком с этим, в основном в игре, есть специальный вид карт (карты заклинаний / карты ловушек / и т. Д.), Которые имеют специальные эффекты, которые могут нарушать правила игры. Я совершенно не представляю, как реализовать логику этих карт. У меня есть идея хранить данные карты с некоторыми флагами, которые могут сигнализировать о том, какие у нее есть способности, но это может быть очень ограничено в том, что она может делать (возможно, только некоторые простые модификации статистики).
Чтобы дать вам представление о том, какие эффекты могут иметь эти карты, вот несколько примеров эффектов карт заклинаний, присутствующих в Yu-Gi-Oh! карточная игра:
- Возродить существо, которое было уничтожено
- Взять под контроль существо противника
- Изменить характеристики существа, основываясь на некоторых условиях (например, Количество существ с определенными именами, которые были уничтожены)
- Специальный призыв определенных существ, если выполнены некоторые условия.
- Объедините два или более существ в более сильное существо.
- Невосприимчивость к некоторым эффектам специальных карт.
Konami сделал несколько видеоигр для игры, в комплекте с ИИ и тысячами разнообразных карт. Я не думаю, что на самом деле можно жестко закодировать всю базу данных, не так ли?
Теперь, конечно, я пытаюсь сделать это не так сложно, как эти игры, но мне интересно, как они их реализуют?
Довольно бесполезно пытаться объединить все это только с переключателями и переменными. Вам придется либо жестко кодировать функции, либо, что более вероятно, иметь скрипт, который вы интерпретируете во время выполнения. Вы бы предоставили скрипту необходимые функции для проверки состояния доски, колод и кладбищ, а также функции для выполнения действий и так далее. Сценарий - это просто простая строка для хранения вместе с другими переменными, связанными с картой.
источник
Я также планирую карточную игру, используя веб-языки с MySQL DB. В настоящее время я собираюсь сделать очень общую настройку, чтобы она была очень гибкой для новых уникальных карт. Например вместо:
это может быть легко:
применение этой концепции ко всем действиям упростит классы, позволит создавать новые карточки, просто добавив одну строку в таблицу карточек.
Все опции и способности будут определены в БД в этом единственном ряду.
источник