made the class selector more agnostic

This commit is contained in:
Zachary Watts
2026-04-18 16:18:08 -04:00
parent c966c4f974
commit feacb20551

16
main.py
View File

@@ -61,6 +61,7 @@ class Adventurer:
class Fighter(Adventurer):
prime_requisite = "strength"
requirements = None
def __init__(self, attributes={}) -> None:
Adventurer.__init__(self, attributes)
self.player_class = "fighter"
@@ -68,6 +69,7 @@ class Fighter(Adventurer):
class MagicUser(Adventurer):
prime_requisite = "intelligence"
requirements = None
def __init__(self, attributes={}) -> None:
Adventurer.__init__(self, attributes)
self.player_class = "magic-user"
@@ -75,6 +77,7 @@ class MagicUser(Adventurer):
class Cleric(Adventurer):
prime_requisite = "wisdom"
requirements = None
def __init__(self, attributes={}) -> None:
Adventurer.__init__(self, attributes)
self.player_class = "cleric"
@@ -82,6 +85,7 @@ class Cleric(Adventurer):
class Thief(Adventurer):
prime_requisite = "dexterity"
requirements = None
def __init__(self, attributes={}) -> None:
Adventurer.__init__(self, attributes)
self.player_class = "thief"
@@ -115,8 +119,12 @@ class Halfling(Adventurer):
class ClassSelector():
def __init__(self, player: Adventurer) -> None:
self.player = player
self.available_classes = [ Fighter, MagicUser, Cleric, Thief ]
self.classes_with_reqs = [ Dwarf, Elf, Halfling ]
# https://stackoverflow.com/questions/3862310/how-to-find-all-the-subclasses-of-a-class-given-its-name
# pull classes that do not have requirements
self.available_classes = [cls for cls in Adventurer.__subclasses__() if not cls.requirements]
# pull classes that do have requirements
self.classes_with_reqs = [cls for cls in Adventurer.__subclasses__() if cls.requirements]
# run function to randomly select an adventurer class
self.selected_class = self.selection()
def return_class_by_best_attribute(self):
@@ -178,12 +186,8 @@ def roll_dice(count, sides):
return sum(random.randint(1,sides) for _ in range(count))
def main():
# https://stackoverflow.com/questions/3862310/how-to-find-all-the-subclasses-of-a-class-given-its-name
#print([cls.__name__ for cls in Adventurer.__subclasses__()])
new_party = PartyGenerator()
new_party.gen_party()
new_party.get_character_sheets()
main()