Можливо, ви захочете заглянути в об'єктно-орієнтований дизайн . Python має гарну підтримку для цього.
Про це написано товсті книги, що може бути страшно, коли ви новачок, але основні принципи досить легкі.
Основний момент полягає лише в тому, що ви визначаєте, з якими предметами ви працюєте. Ви не кажете, про яку гру ви думаєте, але такі речі, як Гравець, Монстр, Предмет, Обладнання, Зброя, Броня тощо, - типові предмети.
Якщо ви хочете різних типів гри, ви, ймовірно, захочете Ігровий об’єкт, який піклується про умови перемоги та інше. Можливо, об’єкт Map також?
Іноді незрозуміло, заслуговує щось бути предметом чи ні, наприклад, пошкодження. Якщо ви не пошкодите об'єкт, код буде простішим, але зробити його об’єктом полегшує налаштування.
Підкласифікація: і зброя, і зброя - це обладнання. Обладнання є предметами. Напевно, є й інші типи предметів. Напевно, вам буде корисно визначити клас Комбатант, для якого і гравці, і монстри є підкласами.
Ідея полягає в тому, що, наприклад, зброя матиме багато спільного з усіма іншими видами предметів, вони мають вагу, розмір та інші подібні властивості.
Отже, підкласифікація дає вам змогу сказати, що "Зброя - це як інші предмети, але крім того, ви можете їх мати, вони впливають на шкоду, яку ви завдаєте, тощо тощо".
Підкласифікація також дозволяє вашим будівельникам мод сказати: "Мій новий тип зброї такий же, як і стандартна зброя, за винятком того, що ..."
Тоді ви повинні вирішити, який об’єкт відповідає за що. Це не так просто, як здається, і вам варто подумати над цим. Неправильний вибір не вплине на основну гру, але ускладнить її налаштування.
Поки ви просто займаєтесь власними силами, ви можете змінювати речі, але щойно ви щось публікуєте, внесення змін стає набагато складніше! Люди зроблять моди, які залежать від того, щоб речі були такими, як вони є зараз. Навіть клопи. Люди пишуть моди, що залежать від помилок, що перебувають у коді. Якщо змінити речі, ці модники зламаються, і у вашому домі з’являться монші.
Наприклад:
Гравець, що володіє зброєю, атакує монстра, що носить декілька арматур. Це відбувається в певному режимі гри та на певній карті.
У обох учасників бойових дій можуть бути такі навички, як критичний удар та ухилення.
Тепер, який об’єкт відповідає за що?
На це немає жодної правильної відповіді. Багато залежить від того, яку налаштування ви хочете дозволити.
Якщо ви ніколи не називаєте об'єкт (наприклад, Map), цей об'єкт не може змінити атаку жодним чином.
Після прийняття всіх цих рішень задокументуйте їх . Напишіть "Посібник з моддерів", в якому перераховано конкретно, які модифіковані методи має кожен об'єкт, які параметри вони приймають, що вони повинні повертати і так далі, і далі, і далі ...
Удачі!