Spaces:
Runtime error
Runtime error
File size: 3,707 Bytes
4632fbc 091bf0d d99eafb 4632fbc 091bf0d d99eafb 4632fbc 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 d99eafb 6f39e61 80da3b8 d99eafb 81ae0d1 6f39e61 81ae0d1 4632fbc 81ae0d1 091bf0d 81ae0d1 091bf0d 81ae0d1 091bf0d 81ae0d1 d99eafb 4632fbc 091bf0d 4632fbc 091bf0d |
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
import streamlit as st
import random
import pandas as pd
import os
# Cascadia Game Components
habitat_tiles = ['π²', 'ποΈ', 'π', 'π΅', 'π']
wildlife_tokens = ['π»', 'π¦
', 'π', 'π¦', 'πΏοΈ']
players = ['Player 1', 'Player 2']
save_file = 'cascadia_game_state.csv'
# Function to load game state from CSV
def load_game_state():
if os.path.exists(save_file):
df = pd.read_csv(save_file)
game_state = {
'habitat_stack': df['habitat_stack'].dropna().tolist(),
'wildlife_stack': df['wildlife_stack'].dropna().tolist(),
'players': {}
}
for player in players:
game_state['players'][player] = {
'habitat': df[player + '_habitat'].dropna().tolist(),
'wildlife': df[player + '_wildlife'].dropna().tolist(),
'nature_tokens': int(df[player + '_nature_tokens'][0])
}
return game_state
else:
return None
# Function to save game state to CSV
def save_game_state(game_state):
data = {
'habitat_stack': pd.Series(game_state['habitat_stack']),
'wildlife_stack': pd.Series(game_state['wildlife_stack'])
}
for player in players:
player_state = game_state['players'][player]
data[player + '_habitat'] = pd.Series(player_state['habitat'])
data[player + '_wildlife'] = pd.Series(player_state['wildlife'])
data[player + '_nature_tokens'] = pd.Series([player_state['nature_tokens']])
df = pd.DataFrame(data)
df.to_csv(save_file, index=False)
# Initialize or load game state
game_state = load_game_state()
if game_state is None:
game_state = {
'habitat_stack': random.sample(habitat_tiles * 10, 50),
'wildlife_stack': random.sample(wildlife_tokens * 10, 50),
'players': {player: {'habitat': [], 'wildlife': [], 'nature_tokens': 3} for player in players}
}
# Streamlit Interface
st.title("π² Cascadia Lite π²")
# Function to draw habitat and wildlife
def draw_habitat_and_wildlife(player):
habitat = st.session_state['habitat_stack'].pop()
wildlife = st.session_state['wildlife_stack'].pop()
st.session_state['players'][player]['habitat'].append(habitat)
st.session_state['players'][player]['wildlife'].append(wildlife)
# Display players' areas
for player in players:
st.write(f"## {player}'s Play Area")
player_data = pd.DataFrame({'Habitat Tiles': st.session_state['players'][player]['habitat'],
'Wildlife Tokens': st.session_state['players'][player]['wildlife']})
st.dataframe(player_data)
# Drafting Phase
if st.button(f"{player}: Draw Habitat and Wildlife"):
draw_habitat_and_wildlife(player)
# Tile Placement
tile_placement = st.selectbox(f"{player}: Place Habitat Tile", options=['Select Position'] + list(range(1, len(st.session_state['players'][player]['habitat']) + 1)))
# Wildlife Placement
wildlife_placement = st.selectbox(f"{player}: Place Wildlife Token", options=['Select Habitat'] + list(range(1, len(st.session_state['players'][player]['wildlife']) + 1)))
# Nature Tokens
if st.session_state['players'][player]['nature_tokens'] > 0:
if st.button(f"{player}: Use a Nature Token"):
st.session_state['players'][player]['nature_tokens'] -= 1
# Logic for swapping wildlife tokens or other actions
st.write(f"{player} used a nature token. Remaining: {st.session_state['players'][player]['nature_tokens']}")
# Save game state
save_game_state()
# Game Controls and Instructions
st.write("## Game Controls")
st.write("Use the buttons and select boxes to play the game!")
|