awacke1 commited on
Commit
d99eafb
Β·
1 Parent(s): 1ae0647

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -5
app.py CHANGED
@@ -1,21 +1,49 @@
1
  import streamlit as st
2
  import random
3
  import pandas as pd
 
4
 
5
  # Cascadia Game Components
6
  habitat_tiles = ['🌲', '🏞️', '🌊', '🌡', 'πŸŒ„']
7
  wildlife_tokens = ['🐻', 'πŸ¦…', '🐟', '🦌', '🐿️']
8
  players = ['Player 1', 'Player 2']
9
- save_file = 'cascadia_game_state.txt'
10
 
11
  # Initialize or load game state
12
  def initialize_game():
13
  st.session_state['habitat_stack'] = random.sample(habitat_tiles * 10, 50)
14
  st.session_state['wildlife_stack'] = random.sample(wildlife_tokens * 10, 50)
15
- st.session_state['players'] = {player: {'habitat': [], 'wildlife': [], 'nature_tokens': 3} for player in players}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
  if 'habitat_stack' not in st.session_state:
18
- initialize_game()
 
 
19
 
20
  # Streamlit Interface
21
  st.title("🌲 Cascadia Lite 🌲")
@@ -52,8 +80,7 @@ for player in players:
52
  st.write(f"{player} used a nature token. Remaining: {st.session_state['players'][player]['nature_tokens']}")
53
 
54
  # Save game state
55
- with open(save_file, 'w') as file:
56
- json.dump(st.session_state, file)
57
 
58
  # Game Controls and Instructions
59
  st.write("## Game Controls")
 
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
+ for player in players:
17
+ st.session_state[player] = {'habitat': [], 'wildlife': [], 'nature_tokens': 3}
18
+
19
+ def load_game_state():
20
+ if os.path.exists(save_file):
21
+ df = pd.read_csv(save_file)
22
+ for player in players:
23
+ st.session_state[player] = {
24
+ 'habitat': df[player + '_habitat'].dropna().tolist(),
25
+ 'wildlife': df[player + '_wildlife'].dropna().tolist(),
26
+ 'nature_tokens': df[player + '_nature_tokens'][0]
27
+ }
28
+ st.session_state['habitat_stack'] = df['habitat_stack'].dropna().tolist()
29
+ st.session_state['wildlife_stack'] = df['wildlife_stack'].dropna().tolist()
30
+
31
+ def save_game_state():
32
+ data = {
33
+ 'habitat_stack': pd.Series(st.session_state['habitat_stack']),
34
+ 'wildlife_stack': pd.Series(st.session_state['wildlife_stack'])
35
+ }
36
+ for player in players:
37
+ data[player + '_habitat'] = pd.Series(st.session_state[player]['habitat'])
38
+ data[player + '_wildlife'] = pd.Series(st.session_state[player]['wildlife'])
39
+ data[player + '_nature_tokens'] = pd.Series([st.session_state[player]['nature_tokens']])
40
+ df = pd.DataFrame(data)
41
+ df.to_csv(save_file, index=False)
42
 
43
  if 'habitat_stack' not in st.session_state:
44
+ load_game_state()
45
+ if 'habitat_stack' not in st.session_state:
46
+ initialize_game()
47
 
48
  # Streamlit Interface
49
  st.title("🌲 Cascadia Lite 🌲")
 
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")