Сейчас тестирую механику для одной игры, все в бумажном виде кроме естественно логики игры её собрался писать на питоне для автоматизации процесса, нужно найти интересную систему боя но беда в том что так ее просто на бумаге не напишешь нужно тестировать убирать добавлять разные состояния боевой системы.
Суть в чем, для генерации персонажа делаю класс CharacterRPG в этом классе создается характеристики персонажа его имя и дополнительные способности типа магии и приемов которыми он может владеть в дальнейшем каждый обьект персонажа будет использоваться в просчетах попал не попал сколько жизней осталось какой статус (просто на бумаге это делать муторно).
Не могу определиться как описать класс магии и вообще делать ли мне под магию отдельный класс или можно записать все просто словарями да и не парить себе мозги с класcами.
Сейчас есть вот такой класс:
class CharacterRPG(): import random def __init__(self, Race='', name='Test1', HP=100, MP=0, Str=0, Agi=0, Int=0, Ros=170, magic={}): self.Race = Race self.name = name self.HP = HP self.MP = MP self.Str = Str self.Agi = Agi self.Int = Int self.Ros = Ros self.Magic = magic self.RacesList = { 'Человек': {'Str': 5, 'Agi': 5, 'Int': 5}, 'Демон': {'Str': 8, 'Agi': 4, 'Int': 3}, 'Эльф': {'Str': 3, 'Agi': 7, 'Int': 5}, 'Гном': {'Str': 6, 'Agi': 2, 'Int': 7} } self.FerstBlist = { 'Сильный': {'Str': 1, 'Agi': -1, 'Int': 0}, 'Слабый': {'Str': -1, 'Agi': 1, 'Int': 0}, 'Умный': {'Str': -1, 'Agi': -1, 'Int': 2}, 'Глупый': {'Str': 2, 'Agi': 0, 'Int': -2}, 'Удивительный': {'Str': -2, 'Agi': 1, 'Int': 1} } self.MagikList = { 'Черная магия': {'Bonus': 20}, 'Белая магия': {'Bonus': 20}, 'Природная магия': {'Bonus': 10}, 'Водная магия': {'Bonus': 20}, 'Огненная магия': {'Bonus': 20} } self.SecondBlist = { 'Простак': { 'magic': { 'Белая магия': self.MagikList['Белая магия'], 'Белая магия': self.MagikList['Белая магия']} }, 'Южанин': {'magic': {'Черная магия': self.MagikList['Черная магия']}}, 'Северянин': {'HP': 15, 'magic': {'Водная магия': self.MagikList['Водная магия']}}, 'Городской': {'magic': {'Огненная магия': self.MagikList['Огненная магия']}}, 'Деревенский': {'magic': {'Природная магия': self.MagikList['Природная магия']}} } def get_race(self): race = random.choice([x for x in self.RacesList]) ferstbonus = random.choice([x for x in self.FerstBlist]) secondbonus = random.choice([x for x in self.SecondBlist]) self.name = '{sec} {fer} {rac}'.format(sec=secondbonus,fer=ferstbonus,rac=race) return race, self.RacesList[race],self.FerstBlist[ferstbonus],self.SecondBlist[secondbonus] def generate_main_stat(self): new_race, stat, ferst, second = self.get_race() self.Race = new_race self.Str = stat['Str'] + ferst['Str'] self.Agi = stat['Agi'] + ferst['Agi'] self.Int = stat['Int'] + ferst['Int'] def generate_name(self, race): sklonnost = ["Хороший", "Злой", "Плохой", "Удивленный", "Пушистый", "Глупый", "Умный"] dostij = ["Славный", "Великий", "Простой", "Маленький", "Грязный"] self.name = "{dostij} {sklonnost} {nacii}".format(nacii=race, sklonnost=random.choice(sklonnost), dostij=random.choice(dostij)) def chose_magek(self): lists = random.choice([x for x in self.MagikList]) return {lists: self.MagikList[lists]} def generate_ros(self): if random.randint(0, 1) == 0: self.Ros = self.Ros + random.randint(0, 30) else: self.Ros = self.Ros - random.randint(0, 30) def generate_hp_bonus(self): v = [] if self.Ros == 170: self.HP == self.HP elif self.Ros > 170: a = self.Ros - 170 for l in xrange(1, a, 3): v.append(l) self.HP = self.HP + ((len(v) * 3) + a) else: a = self.Ros - 170 for l in xrange(1, a, 3): v.append(l) self.HP = self.HP + ((-len(v) * 3) + a) def generate_agi_bonus(self): if self.Ros == 170: self.Agi == self.Agi elif self.Ros > 170: print "1", self.Agi print self.Ros self.Agi = self.Agi + (-(self.Ros - 170) / 4) else: print "2", self.Agi print self.Ros self.Agi = self.Agi + ((self.Ros - 170) / 4) def generate_stat(self): self.generate_main_stat() self.generate_ros() # self.generate_hp_bonus() # self.generate_agi_bonus() def render_print(self): return "Race: {race} Name: {name} Str: {str} Agi: {agi} Int: {int}".format(race=self.Race, name=self.name, str=self.Str, agi=self.Agi, int=self.Int)
у него есть переменная self.SecondBlist это последний бонус который дописывается к имени персонажа и должен давать ему школу магии к которой принадлежит перс, под переменную магии я создаю словрик но когда пытаюсь туда засунуть еще один словарь с магиями происходит ошибка )) я думаю может магию сделать класcом и структурировать магию по средствам этого класса ? но тогда как описать этот клаcс если если в нем должно быть школа маги в каждой школе должно быть по три магии и у каждой магии должен быть параметр урона ))
Что мне делать как мне быть !?
Помогите дорогие друзья за то что прочитали эту порцию информации =)