Как связать переменные? Драконы - PullRequest
1 голос
/ 15 марта 2019

Не уверен, как пользоваться этим редактором, и я нигде не могу его найти, поэтому решил, что спрошу.Я делаю создателя персонажей DND в python.У меня есть список различных навыков, и я хочу сказать: «Если персонаж этого класса, у него есть объекты в этом списке».например.

Appraise, Balance, Bluff, Climb, Concentration, Craft, DecipherScript, Diplomacy,  DisableDevice, Disguise, EscapeArtist, Forgery, GatherInformation, HandleAnimal,  Heal, Hide, Intimidate, Jump, Knowledge, Listen, MoveSilently, OpenLock, Perform,  Profession, Ride, Search, SenseMotive, SleightOfHand, SpeakLanguage, Spellcraft,  Spot, Survival, Swim, Tumble, UseMagicDevice, UseRope = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

ClassSkills=[Appraise, Balance, Bluff, Climb, Concentration, Craft, DecipherScript, Diplomacy, DisableDevice, Disguise, EscapeArtist, Forgery, GatherInformation, HandleAnimal, Heal, Hide, Intimidate, Jump, Knowledge, Listen, MoveSilently, OpenLock, Perform,  Profession, Ride, Search, SenseMotive, SleightOfHand, SpeakLanguage, Spellcraft, Spot, Survival, Swim, Tumble, UseMagicDevice, UseRope]

if class=wizard:
ClassSkills= [Concentration, Craft, DecipherScript, Knowledge, Proffesion, Spellcraft]

if var in ClassSkills:
    SkillPoints= math.floor(Ranks)
else:
    SkillPoints= math.floor(Ranks/2)

было бы другое назначение с помощью мастера классов, но вы, вероятно, поняли.

Я довольно новичок в программировании, и это мой первый основнойпрограмма.Я просто хочу, чтобы он определял, является ли навык классовым навыком, и запускаю другой алгоритм, основанный на том, является ли он или нет.

Я также сделаю некоторые настройки, чтобы иметь разные переменные точки навыка, чтобы я мог индивидуальноизменить список.

1 Ответ

2 голосов
/ 15 марта 2019

Я не думаю, что использование операторов if - лучший подход здесь.Почему бы просто не определить, какими навыками обладает класс персонажа в качестве атрибутов класса, а затем создать свойство, чтобы суммировать их очки умений?Кстати, мне нравится этот проект, над которым вы работаете, отличный способ заняться программированием.

from collections import namedtuple

Skill = namedtuple('Skill', ['name', 'skill_points'])

Appraise = Skill('Appraise', 2)
Balance = Skill('Balance', 3)

class Character():
    def __init__(self, name, skills=None):
        self.name = name
        self.skills = skills

    @property
    def skill_points(self):
        return sum([skill.skill_points for skill in self.skills])

class Wizard(Character):
    def __init__(self, name):
        super().__init__(name, skills=[Appraise, Balance])

bob_the_wizard = Wizard('Bob')
print(bob_the_wizard.skill_points) # 5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...