Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import plotly.express as px | |
import plotly.graph_objects as go | |
import os | |
PLAYERS = { | |
"Player 1": {"Sketch": "π¨", "Character": "π§ββοΈ", "Player Board": "π", "Action Dice": "π²", "Health Tokens": "β€οΈ", "Coin Tokens": "π°", "Battle Tokens": "βοΈ", "Attack": 5, "Defense": 3}, | |
"Player 2": {"Sketch": "π¨", "Character": "π§ββοΈ", "Player Board": "π", "Action Dice": "π²", "Health Tokens": "β€οΈ", "Coin Tokens": "π°", "Battle Tokens": "βοΈ", "Attack": 4, "Defense": 4}, | |
} | |
MONSTERS = { | |
"Goblin": {"Picture": "πΊ", "Description": "A small, mischievous creature with sharp teeth and claws.", "Attack": 2, "Defense": 1}, | |
"Orc": {"Picture": "πΉ", "Description": "A large, brutish humanoid with green skin and a nasty temperament.", "Attack": 4, "Defense": 2}, | |
"Dragon": {"Picture": "π²", "Description": "A massive, fire-breathing beast with scales as hard as steel.", "Attack": 6, "Defense": 5}, | |
} | |
def get_random_monster(): | |
monster_name = st.session_state.selected_monster | |
if monster_name: | |
monster = MONSTERS[monster_name] | |
st.write("Picture: ", monster["Picture"]) | |
st.write("Description: ", monster["Description"]) | |
st.write("Attack: ", monster["Attack"]) | |
st.write("Defense: ", monster["Defense"]) | |
return monster | |
else: | |
return None | |
def save_data(): | |
data = pd.DataFrame.from_dict(st.session_state.players, orient="index") | |
filename = "player_data.csv" | |
data.to_csv(filename) | |
st.write(f"Player data saved to {filename}") | |
def display_player_card(player_name, player_data): | |
st.write(f"**{player_name}**") | |
for key, value in player_data.items(): | |
st.write(f"{key}: {value}") | |
def battle_player_card(): | |
selected_player = st.session_state.selected_player | |
selected_monster = st.session_state.selected_monster | |
if not selected_player: | |
st.warning("Please select a player card.") | |
return | |
if not selected_monster: | |
st.warning("Please select a monster.") | |
return | |
player_data = PLAYERS[selected_player] | |
monster_data = MONSTERS[selected_monster] | |
if player_data["Attack"] > monster_data["Defense"]: | |
st.success("You defeated the monster!") | |
else: | |
st.error("The monster defeated you.") | |
save_data() | |
def load_and_display_player_data_old(): | |
player_data = pd.read_csv("player_data.csv") | |
st.write("## Player Data") | |
st.write(player_data) | |
fig = px.treemap(player_data, | |
path=['Player'], | |
values='Health Tokens', | |
color='Attack', | |
color_continuous_scale='Blues', | |
title='Player Attack Power and Health Tokens') | |
fig.update_traces(textinfo='label+value+percent entry', | |
hovertemplate='<b>%{label}</b><br>Attack: %{color}<br>Health: %{value}<br>Percent: %{percentEntry:.2f}%<extra></extra>') | |
fig.update_layout(margin=dict(t=50, b=0, l=0, r=0), height=400) | |
st.plotly_chart(fig) | |
def load_and_display_player_data(): | |
if os.path.exists("player_data.csv"): | |
player_data = pd.read_csv("player_data.csv") | |
st.write("## Player Data") | |
st.write(player_data) | |
fig = px.treemap(player_data, | |
path=['Player'], | |
values='Health Tokens', | |
color='Attack', | |
color_continuous_scale='Blues', | |
title='Player Attack Power and Health Tokens') | |
fig.update_traces(textinfo='label+value+percent entry', | |
hovertemplate='<b>%{label}</b><br>Attack: %{color}<br>Health: %{value}<br>Percent: %{percentEntry:.2f}%<extra></extra>') | |
fig.update_layout(margin=dict(t=50, b=0, l=0, r=0), height=400) | |
st.plotly_chart(fig) | |
else: | |
st.write("Player data file not found.") | |
def main(): | |
st.set_page_config(page_title="Player Cards and Monsters") | |
st.title("Player Cards and Monsters") | |
st.write("π Select a player card to reveal a monster and battle it! π") | |
if "players" not in st.session_state: | |
st.session_state.players = {} | |
st.sidebar.title("π Select a Player Card") | |
selected_player = st.sidebar.radio("Select a player:", list(PLAYERS.keys())) | |
display_player_card(selected_player, PLAYERS[selected_player]) | |
if st.button("π₯ Battle!"): | |
st.session_state.selected_player = selected_player | |
st.session_state.selected_monster = st.sidebar.selectbox("Select a monster:", list(MONSTERS.keys())) | |
monster = get_random_monster() | |
if monster: | |
battle_player_card() | |
load_and_display_player_data() | |
if __name__ == "__main__": | |
main() | |