diff --git a/spacetradertk.py b/spacetradertk.py index 478716a..504e7ef 100644 --- a/spacetradertk.py +++ b/spacetradertk.py @@ -11,6 +11,7 @@ import src.constants as c import src.game_data as gd +from src.commander import Commander def dec_difficulty() -> None: @@ -31,10 +32,103 @@ def inc_difficulty() -> None: difficulty_current["text"] = c.Difficulty.name(diff_current_value) +def refill_pool() -> None: + pts = points_pool.get() + pts += 1 + points_pool.set(pts) + + +def spend_pool() -> bool: + pts = points_pool.get() + if pts == 0: + return False + pts -= 1 + points_pool.set(pts) + return True + + +def dec_pilot() -> None: + pts = pilot_points.get() + if pts - 1 > 0: + refill_pool() + pts -= 1 + pilot_points.set(pts) + + +def inc_pilot() -> None: + pts = pilot_points.get() + if pts == 10: + return + if spend_pool(): + pts += 1 + pilot_points.set(pts) + + +def dec_fighter() -> None: + pts = fighter_points.get() + if pts - 1 > 0: + refill_pool() + pts -= 1 + fighter_points.set(pts) + + +def inc_fighter() -> None: + pts = fighter_points.get() + if pts == 10: + return + if spend_pool(): + pts += 1 + fighter_points.set(pts) + + +def dec_trader() -> None: + pts = trader_points.get() + if pts - 1 > 0: + refill_pool() + pts -= 1 + trader_points.set(pts) + + +def inc_trader() -> None: + pts = trader_points.get() + if pts == 10: + return + if spend_pool(): + pts += 1 + trader_points.set(pts) + + +def dec_engineer() -> None: + pts = engineer_points.get() + if pts - 1 > 0: + refill_pool() + pts -= 1 + engineer_points.set(pts) + + +def inc_engineer() -> None: + pts = engineer_points.get() + if pts == 10: + return + if spend_pool(): + pts += 1 + engineer_points.set(pts) + + +def cmdr_create(): + cmdr = Commander( + cmdr_name.get(), pilot_points.get(), fighter_points.get(), trader_points.get(), engineer_points.get() + ) + print(cmdr.pprint()) + window.destroy() + + window = tk.Tk() window.title("Space Trader") +window.minsize("160", "160") window.geometry("160x160") + # Title Bar header = ttk.Label(window, text="New Commander", font=("Helvetica", 8)) header.pack() @@ -57,10 +151,10 @@ def inc_difficulty() -> None: text="Normal", ) difficulty_inc = ttk.Button(difficulty_frame, text="+", command=inc_difficulty) -difficulty_label.pack() -difficulty_dec.pack() -difficulty_current.pack() -difficulty_inc.pack() +difficulty_label.pack(side="left") +difficulty_dec.pack(side="left") +difficulty_current.pack(side="left") +difficulty_inc.pack(side="left") # Skill points allocation grid points_pool = tk.IntVar(value=16) @@ -69,22 +163,29 @@ def inc_difficulty() -> None: trader_points = tk.IntVar(value=1) engineer_points = tk.IntVar(value=1) -skills_frame = ttk.Frame(window) +# Skill points allocation grid +points_pool = tk.IntVar(value=16) +pilot_points = tk.IntVar(value=1) +fighter_points = tk.IntVar(value=1) +trader_points = tk.IntVar(value=1) +engineer_points = tk.IntVar(value=1) + +skills_frame = ttk.Frame(window, height=55, width=80) -points_label = ttk.Label(skills_frame, text="Skill Points:") -pilot_label = ttk.Label(skills_frame, text="Pilot:") -fighter_label = ttk.Label(skills_frame, text="Fighter:") -trader_label = ttk.Label(skills_frame, text="Trader:") -engineer_label = ttk.Label(skills_frame, text="Engineer:") +points_label = ttk.Label(skills_frame, text="Skill Points:", justify="left") +pilot_label = ttk.Label(skills_frame, text="Pilot:", justify="left") +fighter_label = ttk.Label(skills_frame, text="Fighter:", justify="left") +trader_label = ttk.Label(skills_frame, text="Trader:", justify="left") +engineer_label = ttk.Label(skills_frame, text="Engineer:", justify="left") -pilot_dec = ttk.Button(skills_frame, text="-") -pilot_inc = ttk.Button(skills_frame, text="+") -fighter_dec = ttk.Button(skills_frame, text="-") -fighter_inc = ttk.Button(skills_frame, text="+") -trader_dec = ttk.Button(skills_frame, text="-") -trader_inc = ttk.Button(skills_frame, text="+") -engineer_dec = ttk.Button(skills_frame, text="-") -engineer_inc = ttk.Button(skills_frame, text="+") +pilot_dec = ttk.Button(skills_frame, text="-", width=2, command=dec_pilot) +pilot_inc = ttk.Button(skills_frame, text="+", width=2, command=inc_pilot) +fighter_dec = ttk.Button(skills_frame, text="-", width=2, command=dec_fighter) +fighter_inc = ttk.Button(skills_frame, text="+", width=2, command=inc_fighter) +trader_dec = ttk.Button(skills_frame, text="-", width=2, command=dec_trader) +trader_inc = ttk.Button(skills_frame, text="+", width=2, command=inc_trader) +engineer_dec = ttk.Button(skills_frame, text="-", width=2, command=dec_engineer) +engineer_inc = ttk.Button(skills_frame, text="+", width=2, command=inc_engineer) points_current = ttk.Label(skills_frame, textvariable=points_pool) pilot_current = ttk.Label(skills_frame, textvariable=pilot_points) @@ -92,35 +193,37 @@ def inc_difficulty() -> None: trader_current = ttk.Label(skills_frame, textvariable=trader_points) engineer_current = ttk.Label(skills_frame, textvariable=engineer_points) -points_label.pack(side="left") -points_current.pack(side="left") +points_label.grid(row=0, column=0, columnspan=2) +points_current.grid(row=0, column=2) -pilot_label.pack() -pilot_dec.pack(side="left") -pilot_current.pack(side="left") -pilot_inc.pack(side="left") +pilot_label.grid(row=1, column=0, sticky="nsew") +pilot_dec.grid(row=1, column=1, sticky="nsew") +pilot_current.grid(row=1, column=2, sticky="nsew") +pilot_inc.grid(row=1, column=3, sticky="nsew") -fighter_label.pack() -fighter_dec.pack(side="left") -fighter_current.pack(side="left") -fighter_inc.pack(side="left") +fighter_label.grid(row=2, column=0, sticky="nsew") +fighter_dec.grid(row=2, column=1, sticky="nsew") +fighter_current.grid(row=2, column=2, sticky="nsew") +fighter_inc.grid(row=2, column=3, sticky="nsew") -trader_label.pack() -trader_dec.pack(side="left") -trader_current.pack(side="left") -trader_inc.pack(side="left") +trader_label.grid(row=3, column=0) +trader_dec.grid(row=3, column=1) +trader_current.grid(row=3, column=2) +trader_inc.grid(row=3, column=3) -engineer_label.pack() -engineer_dec.pack(side="left") -engineer_current.pack(side="left") -engineer_inc.pack(side="left") +engineer_label.grid(row=4, column=0) +engineer_dec.grid(row=4, column=1) +engineer_current.grid(row=4, column=2) +engineer_inc.grid(row=4, column=3) # Button to start the game -start_button = ttk.Button(window, text="OK", command=window.quit, width=15) +start_button = ttk.Button(window, text="OK", command=cmdr_create, width=15) + +name_frame.pack(expand=True) +difficulty_frame.pack(expand=True) +skills_frame.pack(expand=True) +start_button.pack(expand=True) -name_frame.pack() -difficulty_frame.pack() -skills_frame.pack() -start_button.pack() +window.tk.call("tk", "scaling", 4.0) window.mainloop() diff --git a/src/commander.py b/src/commander.py index 70e451e..e41a3bb 100644 --- a/src/commander.py +++ b/src/commander.py @@ -40,12 +40,12 @@ class CombatReputation: class Commander: - def __init__(self, name): + def __init__(self, name, pilot_skill, fighter_skill, trader_skill, engineer_skill): self.name = name - self.pilotSkill = None - self.fighterSkill = None - self.traderSkill = None - self.engineerSkill = None + self.pilotSkill = pilot_skill + self.fighterSkill = fighter_skill + self.traderSkill = trader_skill + self.engineerSkill = engineer_skill self.credits = 1000 self.debt = 0 self.ship = None @@ -54,6 +54,21 @@ def __init__(self, name): self.policeRecord = 0 self.timePlayed = 0 + def __str__(self) -> str: + return self.name + + def pprint(self) -> str: + cmdr_string = f"Name: {self.name}\n \ + Skills: {self.pilotSkill}/{self.fighterSkill}/{self.traderSkill}/{self.engineerSkill}\n \ + Credits: {self.credits}\n \ + Debt: {self.debt}\n \ + Ship: {self.ship}\n \ + Kills: {self.kills}\n \ + Reputation: {self.reputation}\n \ + Police Record: {self.policeRecord}\n \ + Time Played: {self.timePlayed}" + return cmdr_string + def get_net_worth(self): # TODO include moon value eventually return self.credits + self.ship.get_value() - self.debt