Spaces:
Runtime error
Runtime error
File size: 2,706 Bytes
c11db43 ddb3454 4927d16 cc2268c 4927d16 818dd29 1f9a1e6 818dd29 cc2268c bef0dab 1f9a1e6 cc2268c bef0dab 1f9a1e6 cc2268c 4bccfbe cc2268c 1f9a1e6 4bccfbe 1f9a1e6 818dd29 cc2268c bef0dab 4bccfbe bef0dab cc2268c 4bccfbe cc2268c 4bccfbe bef0dab 4bccfbe 4927d16 818dd29 4927d16 818dd29 4927d16 818dd29 bef0dab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
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
EMOJI_LIST = {4: "π", 6: "π", 8: "π", 10: "π", 12: "π", 20: "π", 50: "π", 100: "π"}
DICE_TYPES = [4, 6, 8, 10, 12, 20, 50, 100]
DEFAULT_ROLLS = 3
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.Scatter(x=list(range(1, len(health_tokens) + 1)), y=health_tokens, name="π Health"))
fig.add_trace(go.Scatter(x=list(range(1, len(coin_tokens) + 1)), y=coin_tokens, name="π° Coins"))
fig.update_layout(title="Token Accumulation", xaxis_title="Rolls", yaxis_title="Tokens")
st.plotly_chart(fig)
st.title("π² Dice Rolling Game")
username = st.text_input("π€ Enter your username:")
num_rolls = st.slider("π’ Choose the number of rolls:", 1, 100, DEFAULT_ROLLS)
history = {"health_tokens": [0], "coin_tokens": [0]}
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"{EMOJI_LIST[dice_type]} {roll}" for roll in rolls]
st.write(f"π² Results for {dice_type}-sided dice: {' | '.join(dice_results)}")
for roll in rolls:
if roll == dice_type:
st.write(f"π Congratulations! You rolled the {EMOJI_LIST[dice_type]} highest value! π° Adding 3 coins.")
coin_tokens_added += 3
if roll == max(rolls):
st.write(f"π Congratulations! You rolled the {EMOJI_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 dice high rolls"] = highest_rolls
history["roll_history"] = {**history.get("roll_history", {}), dice_type: rolls}
history["coin_tokens"].append(history["coin_tokens"][-1] + coin_tokens_added)
st.write("π°π Token Accumulation:")
plot_tokens(history["health_tokens"], history["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'<a href="data:file/csv;base64,{b64encode(open(filename, "rb").read()).decode()}" download="{filename}">Download CSV File</a>', unsafe_allow_html=True)
|