CascadiaGen1 / backup4.app.py
awacke1's picture
Create backup4.app.py
ebd82cd
raw
history blame
3.68 kB
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}
}
save_game_state(game_state)
# Streamlit Interface
st.title("🌲 Cascadia Lite 🌲")
# Function to draw habitat and wildlife
def draw_habitat_and_wildlife(player, game_state):
habitat = game_state['habitat_stack'].pop()
wildlife = game_state['wildlife_stack'].pop()
game_state['players'][player]['habitat'].append(habitat)
game_state['players'][player]['wildlife'].append(wildlife)
save_game_state(game_state)
# Display players' areas and handle actions
for player in players:
st.write(f"## {player}'s Play Area")
player_data = pd.DataFrame({'Habitat Tiles': game_state['players'][player]['habitat'],
'Wildlife Tokens': game_state['players'][player]['wildlife']})
st.dataframe(player_data)
# Drafting Phase
if st.button(f"{player}: Draw Habitat and Wildlife"):
draw_habitat_and_wildlife(player, game_state)
game_state = load_game_state() # Reload game state after update
# Tile and Wildlife Placement (Placeholders for actual game logic)
# ... (Add selectbox and logic for tile and wildlife placement)
# Nature Tokens (Placeholder for actual game logic)
# ... (Add button and logic for using nature tokens)
# Reset Button
if st.button("Reset Game"):
os.remove(save_file) # Delete the save file
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}
}
save_game_state(game_state)
st.experimental_rerun()
# Game Controls and Instructions
st.write("## Game Controls")
st.write("Use the buttons and select boxes to play the game!")