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.") 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 #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'Download CSV File', 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! ๐Ÿคค ๐Ÿ‘‰ Download 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! ๐Ÿ‡๐ŸŒฝ๐Ÿ“๐Ÿ’๐Ÿฅ’๐ŸŠ๐Ÿฅ•๐Ÿฅค """)