Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import random | |
import base64 | |
st.markdown(""" | |
๐ฒ: This is the standard die used in many games, with each face showing a different number from 1 to 6. | |
๐ฏ: This emoji represents a dart board, but it can also be used to refer to a 6-sided die in which each face shows a different number from 1 to 6. | |
๐ด: This is a Japanese flower card game, but can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6. | |
๐ฐ: This emoji represents a slot machine, but it can also be used to refer to a 6-sided die in which each face shows a different number from 1 to 6. | |
๐ณ: This emoji represents a bowling game, but it can also be used to refer to a 10-sided die in which each face shows a different number from 0 to 9. | |
๐ฎ: This emoji represents a video game controller, but it can also be used to refer to a 20-sided die often used in role-playing games, with each face showing a different number from 1 to 20. | |
๐ด: This is a Japanese flower card game, but it can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6. | |
๐: This is a mahjong tile representing the one of circles, but it can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6. | |
""") | |
import pandas as pd | |
import tkinter as tk | |
import random | |
# Create the pandas dataframe | |
df = pd.DataFrame({ | |
'emoji': ['๐ฒ', '๐ฏ', '๐ด', '๐ฐ', '๐ณ', '๐ฎ', '๐ด', '๐'], | |
'dice_meaning': ['6-sided die', '6-sided die', '6-sided die', '6-sided die', '10-sided die', '20-sided die', '6-sided die', '6-sided die'] | |
}) | |
# Create the drop-down list box | |
root = tk.Tk() | |
root.title('Actor Role Playing Game') | |
selected_emoji = tk.StringVar() | |
dropdown = tk.OptionMenu(root, selected_emoji, *df['emoji'].values) | |
dropdown.pack() | |
# set up the game board | |
player_pos = {'Player 1': [0, 0], 'Player 2': [0, 0]} | |
board = pd.DataFrame(index=range(5), columns=range(5)) | |
board.iloc[player_pos['Player 1'][0], player_pos['Player 1'][1]] = '๐ด' | |
board.iloc[player_pos['Player 2'][0], player_pos['Player 2'][1]] = '๐ด' | |
# implement the dice game | |
rolls = [] | |
coins = {'Player 1': 0, 'Player 2': 0} | |
def roll_dice(player): | |
roll = random.randint(1, 6) | |
rolls.append(roll) | |
if roll in rolls[:-1]: | |
coins[player] += 10 | |
# save results to file | |
results = pd.DataFrame(columns=['Player', 'Roll']) | |
def save_results(player, roll): | |
results.loc[len(results)] = [player, roll] | |
results.to_csv('results.txt', index=False) | |
# implement download link | |
def get_table_download_link(df, text): | |
csv = df.to_csv(index=False) | |
b64 = base64.b64encode(csv.encode()).decode() | |
href = f'<a href="data:file/csv;base64,{b64}" download="{text}.csv">Download Results</a>' | |
return href | |
# create multiplayer aspect | |
players = ['Player 1', 'Player 2'] | |
player = st.selectbox('Select Player', players) | |
player_pos[player][1] = st.slider('Move Right or Left', -2, 2, 0) | |
player_pos[player][0] = st.slider('Move Up or Down', -2, 2, 0) | |
board.iloc[player_pos['Player 1'][0], player_pos['Player 1'][1]] = '๐ฎ' | |
board.iloc[player_pos['Player 2'][0], player_pos['Player 2'][1]] = '๐ฒ' | |
if st.button('Roll Dice'): | |
roll_dice(player) | |
st.write('Roll:', rolls[-1]) | |
st.write('Coins:', coins[player]) | |
save_results(player, rolls[-1]) | |
st.write(board) | |
if st.button('Download Results'): | |
st.markdown(get_table_download_link(results, 'results'), unsafe_allow_html=True) |