Возможно, вы захотите взглянуть на объектно-ориентированный дизайн . Python имеет хорошую поддержку для этого.
Об этом написаны толстые книги, которые могут быть страшными, когда вы новичок, но основные принципы довольно просты.
Главное, что вы определяете, с какими объектами вы работаете. Вы не говорите, о какой игре вы думаете, но такие вещи, как игрок, монстр, предмет, снаряжение, оружие, броня и т. Д. Являются типичными объектами.
Если вам нужны разные типы игр, вам, вероятно, понадобится объект Game, который заботится о состоянии победы и тому подобное. Возможно, объект Map тоже?
Иногда неясно, заслуживает ли что-то быть объектом или нет, например, повреждение. Если вы не наносите ущерб объекту, код будет проще, но его создание облегчает настройку.
Подклассы: и оружие, и доспехи являются снаряжением. Оборудование - это предметы. Есть, вероятно, другие типы предметов. Возможно, вам будет полезно определить класс Combatant, в котором оба игрока и монстры являются подклассами.
Идея состоит в том, что, например, у Оружия будет много общего со всеми другими типами Предметов, они имеют вес, размер и другие подобные свойства.
Таким образом, подклассы дают вам возможность сказать, что «оружие похоже на другие предметы, но кроме того, вы можете владеть ими, они влияют на наносимый вами урон и т. Д. И т. Д.»
Подклассы также позволяют вашим создателям модов сказать: «Мой новый тип оружия похож на стандартное оружие, за исключением того, что ...»
Затем вы должны решить, какой объект за что отвечает. Это не так просто, как кажется, и вы должны подумать об этом. Неправильный выбор не сильно повлияет на основную игру, но усложнит настройку.
Пока вы просто возитесь, вы можете что-то менять, но в тот момент, когда вы публикуете что-то для публики, вносить изменения становится намного сложнее! Люди будут создавать моды, которые зависят от того, что сейчас происходит. Даже ошибки. Люди будут писать моды, которые зависят от ошибок в коде. Если вы что-то поменяете, эти моды сломаются, и в вашем доме появятся маны линчевателей.
Например:
Игрок, владеющий оружием, атакует монстра в нескольких доспехах. Это происходит в определенном игровом режиме и на определенной карте.
Оба бойца могут иметь такие навыки, как критический удар и уклонение.
Теперь, какой объект за что отвечает?
Существует не один правильный ответ на это. Многое зависит от того, какую настройку вы хотите разрешить.
Если вы никогда не вызываете объект (например, карту), этот объект никак не может изменить атаку.
После принятия всех этих решений запишите их . Напишите «Руководство для моддеров», в котором перечисляются, какие именно изменяемые методы есть у каждого объекта, какие параметры они принимают, что они должны возвращать, и так далее, и тому подобное ...
Удачи!