Skip to content

Commit

Permalink
Added init parameters for commander
Browse files Browse the repository at this point in the history
  • Loading branch information
RPINerd committed Aug 8, 2024
1 parent 867984b commit 74bffa2
Show file tree
Hide file tree
Showing 2 changed files with 164 additions and 46 deletions.
185 changes: 144 additions & 41 deletions spacetradertk.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import src.constants as c
import src.game_data as gd
from src.commander import Commander


def dec_difficulty() -> None:
Expand All @@ -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()
Expand All @@ -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)
Expand All @@ -69,58 +163,67 @@ 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)
fighter_current = ttk.Label(skills_frame, textvariable=fighter_points)
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()
25 changes: 20 additions & 5 deletions src/commander.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 74bffa2

Please sign in to comment.