From feacb205510ac4f54a2e9002b8140a41677a15d2 Mon Sep 17 00:00:00 2001 From: Zachary Watts Date: Sat, 18 Apr 2026 16:18:08 -0400 Subject: [PATCH] made the class selector more agnostic --- main.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index e329cad..86c296f 100755 --- a/main.py +++ b/main.py @@ -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()