Skip to content

Commit

Permalink
(v3.1.12d) Commenting and fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
Jumitti committed Jun 28, 2024
1 parent c476d0f commit 33e8fff
Show file tree
Hide file tree
Showing 10 changed files with 93 additions and 101 deletions.
12 changes: 8 additions & 4 deletions panel/ID_card.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@
from starwalkers.func import get_d_sym, get_cost


# Display Commander Grade with stars
def display_stars(grade):
full_star = '⭐'
empty_star = '☆'
max_stars = 5

stars = full_star * grade + empty_star * (max_stars - grade)
return stars


# Reformatting money
def format_money(value):
"""Format money value into a more readable string with suffixes."""
if value >= 1_000_000_000:
return f"{value / 1_000_000_000:.2f}B"
elif value >= 1_000_000:
Expand All @@ -29,7 +29,7 @@ def format_money(value):


def ID_card(username, display="community_info"):
user_info = sql.get_user(username)
user_info = sql.get_user(username) # Some elements are not necessary
money = user_info[2]
ship_list = user_info[3]
enemy_list = user_info[4]
Expand Down Expand Up @@ -61,10 +61,11 @@ def ID_card(username, display="community_info"):
navigation_time_bonus = user_info[30]
grade_token = user_info[31]
token_bonus = user_info[32]

if user_info:
st.header(f"🧑🏽‍🚀 Captain {username}'s ID Card {display_stars(grade)}")

# Resources (money)
st.subheader("💲 Resources")
colres1, colres2, colres3, colres4 = st.columns(4, gap="small")
colres1.metric(f"💲 Money", f"{format_money(money)}$")
Expand All @@ -74,6 +75,7 @@ def ID_card(username, display="community_info"):
if display == "player_info":
colres4.progress(battle_played)

# Space fleet
st.subheader("🚀 Space Fleet")
with st.expander(f"Space fleet capacity: {fleet_size} ships", expanded=True):
ship_data = []
Expand All @@ -99,12 +101,14 @@ def ID_card(username, display="community_info"):
else:
df = pd.DataFrame()

# Stats battles
st.subheader("⚔️ Battles")
colbattle1, colbattle2, colbattle3 = st.columns(3, gap="small")
colbattle1.metric(f"🏆 Win", f"{win}")
colbattle2.metric(f"💥 Loose", f"{loose}")
colbattle3.metric(f"⚖️ Win/Loss Ratio", f"{ratio_WL}")

# Skills and trophies
st.subheader("🏆 Skills and trophies")
if display == "player_info":
colsu1, colsu2, colsu3 = st.columns(3, gap="small")
Expand Down
38 changes: 22 additions & 16 deletions panel/battle.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


def battle(username, df):
user_info = sql.get_user(username)
user_info = sql.get_user(username) # Some elements are not necessary
money = user_info[2]
ship_list = user_info[3]
enemy_list = user_info[4]
Expand Down Expand Up @@ -43,15 +43,27 @@ def battle(username, df):
grade_token = user_info[31]
token_bonus = user_info[32]

# Header
st.header("⚔️ Space war")
colwar1, colwar2 = st.columns(2, gap="small")

if 'selected_ships_enemy' not in st.session_state or not st.session_state.selected_ships_enemy:
st.session_state.selected_ships_enemy = []

# Begin the battle
if colwar1.button("💥 Look for enemies !", disabled=True if len(enemy_list) > 2 else False):
for _ in range(random.randint(1, 10)):
ship = roll(proba_letter=p_letter, proba_number=p_number)
sql.add_ship(username, ship, "enemies")
st.toast("⚔️ The enemies enter the battles")
time.sleep(0.75) & st.rerun()

# During the battle
if enemy_list:
enemy_data = []
colfight1, colfight2 = st.columns(2, gap="small")

# Display enemies and selected enemies
for ship in json.loads(enemy_list):
enemy_data.append(
{"Ship": ship, "Value": get_d_sym(get_cost(ship)).replace('$', '💲')})
Expand All @@ -68,12 +80,10 @@ def battle(username, df):
colfight1.write("Enemies list:")
colfight1.dataframe(styled_df_enemy, use_container_width=True, hide_index=True)

# Vérifiez et sélectionnez aléatoirement les navires ennemis si nécessaire
if not st.session_state.selected_ships_enemy:
num_ships_to_select = random.randint(1, 4 if len(enemy_data) >= 4 else len(enemy_data))
st.session_state.selected_ships_enemy = random.sample(enemy_data, num_ships_to_select)

# Affichage des navires sélectionnés dans le deuxième tableau
colfight2.write("Fight against:")
styled_df_enemy = pd.DataFrame(st.session_state.selected_ships_enemy).sort_values(by="Value",
ascending=False)
Expand All @@ -83,6 +93,7 @@ def battle(username, df):
]).set_properties(**{'text-align': 'left'})
colfight2.dataframe(styled_selected_df_enemy, use_container_width=True, hide_index=True)

# Selection of shuttles to fight
if not df.empty and enemy_data:
colselectfight1, colselectfight2 = st.columns([2, 1], gap="small")
shuttles_for_fight = colselectfight1.multiselect("Select shuttles to fight", df["Ship"].tolist(),
Expand All @@ -91,10 +102,10 @@ def battle(username, df):
max_selections=4, default=df["Ship"].tolist()[:4])
value_player = int(sum(get_cost(ship) for ship in shuttles_for_fight) * random.uniform(1, damage_bonus))
value_enemies = int(sum(get_cost(ship) for ship in styled_df_enemy["Ship"]))
# colselectfight2.write(value_enemies)
# colselectfight2.write(value_player)
if colselectfight2.button(f"FIGHT !"):
damage = random.randint(0, 100)

# Win
if value_player > value_enemies:
sql.trade_token(username, len(styled_df_enemy['Ship']) + int(random.randint(0, token_bonus)))
money_win = int((sum(get_cost(ship) for ship in styled_df_enemy['Ship']) // 1.5) * random.uniform(1, treasure_money_bonus))
Expand All @@ -105,34 +116,36 @@ def battle(username, df):
for ship in shuttles_for_fight:
player_let, player_int = ship.split("-")
new_number = int(player_int) - (int((damage * random.uniform(resistance_bonus, 1))) // len(shuttles_for_fight))
if new_number >= 0:
if new_number >= 0: # Shuttles operational
update_ship = roll(letter=player_let, number=new_number)
sql.add_ship(username, update_ship, "player", fight=True)
sql.remove_ship(username, ship, "player")
else:
else: # Shuttles broken
sql.remove_ship(username, ship, "player", fight=True)
st.toast(f"💥 You loose {ship} in the battle.")
st.toast(f'🏆 You win the battle. 💲 Money win: {money_win}$. 🛠️ Damage: {damage}.')
time.sleep(2) & st.rerun()

# Loose
if value_player <= value_enemies:
sql.trade_token(username, len(shuttles_for_fight) + int(random.randint(0, token_bonus)))
for ship in shuttles_for_fight:
sql.remove_ship(username, ship, "player", fight=True)
for ship in styled_df_enemy['Ship']:
enemy_let, enemy_int = ship.split("-")
new_number = int(enemy_int) - (int((damage / random.uniform(1, resistance_bonus))) // len(styled_df_enemy))
if new_number >= 0:
if new_number >= 0: # Shuttles operational
update_ship = roll(letter=enemy_let, number=new_number)
sql.add_ship(username, update_ship, "enemies", fight=True)
sql.remove_ship(username, ship, "enemies")
else:
else: # Shuttles broken
sql.remove_ship(username, ship, "enemies", fight=True)
st.session_state.pop('selected_ships_enemy', None)
st.toast(
f'💥 You lost the battle and {" ".join(ship for ship in shuttles_for_fight)} shuttle(s)')
time.sleep(0.75) & st.rerun()

# Leave (coward)
if colwar2.button("🏃‍♂️Leave fight"):
if random.random() <= agility_bonus:
for ship in json.loads(enemy_list):
Expand All @@ -145,10 +158,3 @@ def battle(username, df):

elif df.empty:
st.warning("You don't have shuttles")

if colwar1.button("💥 Look for enemies !", disabled=True if len(enemy_list) > 2 else False):
for _ in range(random.randint(1, 10)):
ship = roll(proba_letter=p_letter, proba_number=p_number)
sql.add_ship(username, ship, "enemies")
st.toast("⚔️ The enemies enter the battles")
time.sleep(0.75) & st.rerun()
11 changes: 8 additions & 3 deletions panel/community.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


def community(username):
user_info = sql.get_user(username)
user_info = sql.get_user(username) # Some elements are not necessary
money = user_info[2]
ship_list = user_info[3]
enemy_list = user_info[4]
Expand Down Expand Up @@ -40,18 +40,23 @@ def community(username):
grade_token = user_info[31]
token_bonus = user_info[32]

# Header
st.header("👨🏼‍🚀 Community")
usernames = sql.get_user()
default_user = username if username in sql.get_user() else usernames[0]

colcom1, colcom2 = st.columns([2, 1], gap="small")
selected_username = colcom1.selectbox('👨🏽‍🚀 See a Captain', usernames, placeholder="Choose a captain")

if selected_username:
colcom2.markdown("")
colcom2.markdown("")
if colcom2.toggle(f"{selected_username} ID card"):
ID_card.ID_card(selected_username)
ID_card.ID_card(selected_username) # See selected user

colsm1, colsm2 = st.columns([2, 1], gap="small")

# Send money
send_money = colsm1.slider("💸 Send money", step=1, min_value=0,
max_value=money if money > 0 else 1,
disabled=True if money < 1 or selected_username == username else False)
Expand All @@ -62,4 +67,4 @@ def community(username):
sql.update_money(selected_username, send_money, context="receiver")
sql.update_money(username, send_money, context="sender")
st.toast(f"💸 {send_money}$ sends to {selected_username}")
time.sleep(0.75) & st.rerun()
time.sleep(0.75) & st.rerun()
9 changes: 7 additions & 2 deletions panel/shop.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@


def shop(username, df, value_list):
user_info = sql.get_user(username)
user_info = sql.get_user(username) # Some elements are not necessary
money = user_info[2]
ship_list = user_info[3]
enemy_list = user_info[4]
Expand Down Expand Up @@ -41,6 +41,7 @@ def shop(username, df, value_list):
grade_token = user_info[31]
token_bonus = user_info[32]

# Header
st.header("🏪 Store")

# Open case
Expand All @@ -53,9 +54,10 @@ def shop(username, df, value_list):

if "buy_shuttles" not in st.session_state:
st.session_state.buy_shuttles = False
if st.session_state.buy_shuttles is True:
if st.session_state.buy_shuttles is True and st.session_state.effect_sound:
sound_effects.shuttles()
st.session_state.buy_shuttles = False

colopencase2.markdown("")
if colopencase2.button(f"Open {open_case} case(s) for {open_case * ((10 + 10 * grade) * commerce_bonus)}$",
disabled=True if money < ((10 + 10 * grade) * commerce_bonus) or len(df) >= fleet_size else False):
Expand All @@ -71,6 +73,8 @@ def shop(username, df, value_list):
colsellship1, colsellship2 = st.columns([2, 1], gap="small")

if not df.empty:

# Select shuttles to sell
sell = colsellship1.multiselect("Sell ship", df["Ship"].tolist(), label_visibility="collapsed",
placeholder="Select shuttles for sale")
price = sum(get_cost(ship) for ship in sell)
Expand All @@ -82,6 +86,7 @@ def shop(username, df, value_list):
st.toast("The shuttles have been sold!")
time.sleep(0.75) & st.rerun()

# Sell by value
st.markdown("Sell shuttles of the same value")
sorted_values = sorted(value_list, reverse=True)
num_columns = 3
Expand Down
3 changes: 1 addition & 2 deletions probabilities/probabilities_letter.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@
total = sum(probabilities)
probabilities = [p / total for p in probabilities]

# Sauvegarde des probabilités dans un fichier JSON
with open(f'probabilities_letter_{value}.json', 'w') as f:
json.dump(probabilities, f)

print(f"Probabilités pour value={value} sauvegardées avec succès.")
print(f"Probabilities for value={value} saved successfully.")

3 changes: 1 addition & 2 deletions probabilities/probabilities_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
total_probability = sum(probabilities_number)
probabilities_number = [p / total_probability for p in probabilities_number]

# Sauvegarde des probabilités dans un fichier JSON
with open(f'probabilities_number_{value}.json', 'w') as f:
json.dump(probabilities_number, f)

print("Probabilités sauvegardées avec succès.")
print(f"Probabilities for value={value} saved successfully.")
2 changes: 1 addition & 1 deletion scheduled_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def create_backup():
backup_filename = f'users_{now}.db'
backup_path = os.path.join(backup_dir, backup_filename)
shutil.copy2(db_path, backup_path)
print(f'Sauvegarde créée : {backup_path}')
print(f'Backup created : {backup_path}')

# Clean old backups if more than 10 present
backups = sorted(os.listdir(backup_dir), key=lambda x: os.path.getmtime(os.path.join(backup_dir, x)))
Expand Down
14 changes: 9 additions & 5 deletions starwalkers/func.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

def got_let_int(letter): # Letter value
letters = {
"*": 100,
"*": 100, # This one not accessible by random buy of shuttles
"A": 26,
"B": 25,
"C": 24,
Expand Down Expand Up @@ -39,6 +39,7 @@ def roll(proba_letter=None, proba_number=None, number_min=None, number_max=None,
letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

# To manage categories
if letter_min or letter_max:
min_index = letters.index(letter_min.upper())
max_index = letters.index(letter_max.upper())
Expand All @@ -48,24 +49,27 @@ def roll(proba_letter=None, proba_number=None, number_min=None, number_max=None,
sub_letters = letters[max_index:min_index + 1]
ship_let = random.choice(sub_letters)

# Specific letter
elif letter is not None:
ship_let = letter

# Random letter
else:
letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
with open(f'probabilities/probabilities_letter_{proba_letter}.json', 'r') as f:
probabilities = json.load(f)
ship_let = random.choices(letters, weights=probabilities)[0]

# To manage categories
if number_min or number_max:
number_min = 0 if number_min is None else number_min
number_max = 9999 if number_max is None else number_max
ran = random.randint(number_min, number_max) if number is None else number

# Specific number
elif number is not None:
ran = number

# Random number
else:
digits = list(range(10000))
with open(f'probabilities/probabilities_number_{proba_number}.json', 'r') as f:
Expand All @@ -91,7 +95,7 @@ def get_cost(a): # Get cost of a ship
return cost


def upgrade_fleet(fleet_size):
def upgrade_fleet(fleet_size): # Price for upgrade fleet size
x1 = 10
y1 = 0.5
x2 = 40
Expand All @@ -102,6 +106,6 @@ def upgrade_fleet(fleet_size):
return price


def upgrade(grade, coefficient, multiplier):
def upgrade(grade, coefficient, multiplier): # Price for skills and others capacities
price = math.floor(multiplier * math.exp(coefficient * (grade + 1)))
return price
Loading

0 comments on commit 33e8fff

Please sign in to comment.