Spaces:
Runtime error
Runtime error
File size: 2,860 Bytes
c11db43 ddb3454 4927d16 cc2268c 4927d16 818dd29 1f9a1e6 cc2268c 818dd29 1f9a1e6 818dd29 cc2268c bef0dab 1f9a1e6 cc2268c bef0dab 1f9a1e6 cc2268c 1f9a1e6 cc2268c 1f9a1e6 818dd29 1f9a1e6 818dd29 cc2268c bef0dab cc2268c bef0dab cc2268c 4927d16 bef0dab 6b5d290 818dd29 cc2268c 4927d16 818dd29 4927d16 818dd29 4927d16 8cca886 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 55 56 57 58 59 60 61 62 63 64 65 66 |
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
# Define emoji list
EMOJI_LIST = {4: "π", 6: "π", 8: "π", 10: "π", 12: "π", 20: "π", 50: "π", 100: "π"}
# Define the dice types and default number of rolls
DICE_TYPES = [4, 6, 8, 10, 12, 20, 50, 100]
DEFAULT_ROLLS = 3
# Define a function to roll dice
def roll_dice(num_rolls, dice_type):
rolls = np.random.randint(1, dice_type + 1, size=num_rolls)
return rolls
# Define a function to plot tokens
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)
# Define the app
st.title("Dice Rolling Game")
# Get username and number of rolls
username = st.text_input("Enter your username:")
num_rolls = st.slider("Choose the number of rolls:", 1, 1000000, DEFAULT_ROLLS)
# Roll dice for each type and accumulate high rolls and tokens
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)
st.write(f"Results for {dice_type}-sided dice:")
for roll in rolls:
st.write(f"{EMOJI_LIST[dice_type]} {roll}")
if roll == dice_type:
st.write("Congratulations! You rolled the highest value!")
if dice_type == 100:
st.write("Adding 10 coins for rolling over 90 on 100-sided dice.")
history["coin_tokens"].append(history["coin_tokens"][-1] + 10)
history[f"{dice_type}-sided dice high rolls"] = highest_rolls
history["roll_history"] = {**history.get("roll_history", {}), dice_type: rolls}
history["health_tokens"].append(history.get("20-sided dice high rolls", 0))
history["coin_tokens"].append(history.get("100-sided dice high rolls", 0))
# Plot token accumulation
st.write("Token Accumulation:")
plot_tokens(history["health_tokens"], history["coin_tokens"])
# Create DataFrame and save to CSV file
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)
# Show download link for CSV file
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)
|