Sankey-Snacks / app.py
awacke1's picture
Update app.py
94b4a11
import streamlit as st
import numpy as np
import pandas as pd
import plotly.graph_objects as go
from datetime import datetime
from base64 import b64encode
import time
FOOD_LIST = {4: "๐Ÿฅฆ", 6: "๐Ÿ‡", 8: "๐Ÿฅ•", 10: "๐Ÿ…", 12: "๐Ÿ“", 20: "๐Ÿฅ‘", 50: "๐Ÿ", 100: "๐Ÿฅฅ"}
def roll_dice(num_rolls, dice_type):
rolls = np.random.randint(1, dice_type + 1, size=num_rolls)
return rolls
def plot_tokens(health_tokens, coin_tokens):
fig = go.Figure()
fig.add_trace(go.Sankey(
node = {
"label": ["Health", "Coins"] + [FOOD_LIST[i] for i in DICE_TYPES],
"pad": 15
},
link = {
"source": [0, 1] + list(range(2, len(DICE_TYPES) + 2)),
"target": [2] * len(DICE_TYPES) + [3 + i for i in range(len(DICE_TYPES))],
"value": health_tokens + coin_tokens
},
))
return fig
st.set_page_config(page_title="๐ŸŽ๐Ÿฅ•Sankey Snacks๐ŸŒฝ๐Ÿฅ’", page_icon=":game_die:")
st.title("๐ŸŽ๐Ÿฅ•Sankey Snacks๐ŸŒฝ๐Ÿฅ’")
username = st.sidebar.text_input("๐Ÿ‘ค Enter your username:")
num_rolls = st.sidebar.slider("๐Ÿ”ข Choose the number of rolls:", 1, 100, 3)
DICE_TYPES = [4, 6, 8, 10, 12, 20, 50, 100]
history = {"health_tokens": [0], "coin_tokens": [0]}
fig_element = st.empty()
for i in range(10):
for dice_type in DICE_TYPES:
rolls = roll_dice(num_rolls, dice_type)
highest_rolls = sum(roll == dice_type for roll in rolls)
coin_tokens_added = 0
dice_results = [f"{FOOD_LIST[dice_type]} {roll}" for roll in rolls]
st.write(f"๐ŸŽฐ Results for {dice_type}-sided slot machine: {' | '.join(dice_results)}")
for roll in rolls:
if roll == dice_type:
st.write(f"๐ŸŽ‰ Congratulations! You got the {FOOD_LIST[dice_type]} jackpot! ๐Ÿ’ฐ Adding 3 coins.")
coin_tokens_added += 3
if roll == max(rolls):
st.write(f"๐ŸŽ‰ Congratulations! You got the {FOOD_LIST[dice_type]} maximum value! ๐Ÿ’– Adding 10 health tokens. ๐Ÿ“Sankey Snacks!๐ŸŒฝ")
if dice_type == 100:
history["health_tokens"].append(history["health_tokens"][-1] + 10)
history[f"{dice_type}-sided slot machine jackpots"] = highest_rolls
history["roll_history"] = {**history.get("roll_history", {}), dice_type: rolls}
history["coin_tokens"].append(history["coin_tokens"][-1] + coin_tokens_added)
fig = plot_tokens(history["health_tokens"], history["coin_tokens"])
fig_element.plotly_chart(fig)
time.sleep(1)
df = pd.concat([pd.DataFrame(history["roll_history"]), pd.DataFrame(history["health_tokens"], columns=["Health Tokens"]), pd.DataFrame(history["coin_tokens"], columns=["Coin Tokens"])], axis=1)
timestamp = datetime.now().strftime("%m-%d-%Y-%H-%M-%S")
filename = f"{username}_{timestamp}.csv"
df.to_csv(filename, index=False)
st.markdown(f'<a href="data:file/csv;base64,{b64encode(open(filename, "rb").read()).decode()}" download="{filename}">Download CSV File</a>', unsafe_allow_html=True)
st.markdown("""
๐Ÿ“ฃ Introducing ๐ŸŽ๐Ÿฅ•Sankey Snacks๐ŸŒฝ๐Ÿฅ’ - the game that makes healthy eating fun and interactive!
๐Ÿ‘‰ Are you tired of the same old boring STEM activities? Sankey Snacks is here to add some excitement to your learning experience! ๐Ÿคฉ
๐Ÿ‘‰ Our game uses ๐ŸŽ๐Ÿฅ•Sankey๐ŸŒฝ๐Ÿฅ’ diagrams to show you the flow of nutrients in the food you eat. ๐ŸŒก๏ธ
๐Ÿ‘‰ From crispy ๐ŸŽ to crunchy ๐Ÿฅ•, Sankey Snacks makes it easy to see how the food you eat affects your body. And don't worry, we didn't forget about the occasional ๐Ÿ” or ๐ŸŸ treat! ๐Ÿคค
๐Ÿ‘‰ Clone ๐ŸŽ๐Ÿฅ•Sankey Snacks๐ŸŒฝ๐Ÿฅ’ today and start exploring the world of healthy eating in a fun and interactive way! ๐ŸŽฎ
๐Ÿ‘‰ It's time to ditch the boring old textbooks and embrace the world of ๐ŸŽ๐Ÿฅ•Sankey๐ŸŒฝ๐Ÿฅ’ diagrams and healthy snacks! ๐Ÿฅฆ๐Ÿฅค
๐Ÿ‘‰ Get ready to snack and learn with Sankey Snacks! ๐Ÿ‡๐ŸŒฝ๐Ÿ“๐Ÿ’๐Ÿฅ’๐ŸŠ๐Ÿฅ•๐Ÿฅค
""")