awacke1 commited on
Commit
3b0f24d
Β·
1 Parent(s): 80da3b8

Create backup3.app.py

Browse files
Files changed (1) hide show
  1. backup3.app.py +87 -0
backup3.app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import random
3
+ import pandas as pd
4
+ import os
5
+
6
+ # Cascadia Game Components
7
+ habitat_tiles = ['🌲', '🏞️', '🌊', '🌡', 'πŸŒ„']
8
+ wildlife_tokens = ['🐻', 'πŸ¦…', '🐟', '🦌', '🐿️']
9
+ players = ['Player 1', 'Player 2']
10
+ save_file = 'cascadia_game_state.csv'
11
+
12
+ # Initialize or load game state
13
+ def initialize_game():
14
+ st.session_state['habitat_stack'] = random.sample(habitat_tiles * 10, 50)
15
+ st.session_state['wildlife_stack'] = random.sample(wildlife_tokens * 10, 50)
16
+ st.session_state['players'] = {player: {'habitat': [], 'wildlife': [], 'nature_tokens': 3} for player in players}
17
+
18
+ def load_game_state():
19
+ if os.path.exists(save_file):
20
+ df = pd.read_csv(save_file)
21
+ for player in players:
22
+ st.session_state['players'][player] = {
23
+ 'habitat': df[player + '_habitat'].dropna().tolist(),
24
+ 'wildlife': df[player + '_wildlife'].dropna().tolist(),
25
+ 'nature_tokens': df[player + '_nature_tokens'][0]
26
+ }
27
+ st.session_state['habitat_stack'] = df['habitat_stack'].dropna().tolist()
28
+ st.session_state['wildlife_stack'] = df['wildlife_stack'].dropna().tolist()
29
+
30
+ def save_game_state():
31
+ data = {
32
+ 'habitat_stack': pd.Series(st.session_state['habitat_stack']),
33
+ 'wildlife_stack': pd.Series(st.session_state['wildlife_stack'])
34
+ }
35
+ for player in players:
36
+ player_state = st.session_state['players'][player]
37
+ data[player + '_habitat'] = pd.Series(player_state['habitat'])
38
+ data[player + '_wildlife'] = pd.Series(player_state['wildlife'])
39
+ data[player + '_nature_tokens'] = pd.Series([player_state['nature_tokens']])
40
+ df = pd.DataFrame(data)
41
+ df.to_csv(save_file, index=False)
42
+
43
+ if 'players' not in st.session_state:
44
+ load_game_state()
45
+ if 'players' not in st.session_state:
46
+ initialize_game()
47
+
48
+ # Streamlit Interface
49
+ st.title("🌲 Cascadia Lite 🌲")
50
+
51
+ # Function to draw habitat and wildlife
52
+ def draw_habitat_and_wildlife(player):
53
+ habitat = st.session_state['habitat_stack'].pop()
54
+ wildlife = st.session_state['wildlife_stack'].pop()
55
+ st.session_state['players'][player]['habitat'].append(habitat)
56
+ st.session_state['players'][player]['wildlife'].append(wildlife)
57
+
58
+ # Display players' areas
59
+ for player in players:
60
+ st.write(f"## {player}'s Play Area")
61
+ player_data = pd.DataFrame({'Habitat Tiles': st.session_state['players'][player]['habitat'],
62
+ 'Wildlife Tokens': st.session_state['players'][player]['wildlife']})
63
+ st.dataframe(player_data)
64
+
65
+ # Drafting Phase
66
+ if st.button(f"{player}: Draw Habitat and Wildlife"):
67
+ draw_habitat_and_wildlife(player)
68
+
69
+ # Tile Placement
70
+ tile_placement = st.selectbox(f"{player}: Place Habitat Tile", options=['Select Position'] + list(range(1, len(st.session_state['players'][player]['habitat']) + 1)))
71
+
72
+ # Wildlife Placement
73
+ wildlife_placement = st.selectbox(f"{player}: Place Wildlife Token", options=['Select Habitat'] + list(range(1, len(st.session_state['players'][player]['wildlife']) + 1)))
74
+
75
+ # Nature Tokens
76
+ if st.session_state['players'][player]['nature_tokens'] > 0:
77
+ if st.button(f"{player}: Use a Nature Token"):
78
+ st.session_state['players'][player]['nature_tokens'] -= 1
79
+ # Logic for swapping wildlife tokens or other actions
80
+ st.write(f"{player} used a nature token. Remaining: {st.session_state['players'][player]['nature_tokens']}")
81
+
82
+ # Save game state
83
+ save_game_state()
84
+
85
+ # Game Controls and Instructions
86
+ st.write("## Game Controls")
87
+ st.write("Use the buttons and select boxes to play the game!")