awacke1 commited on
Commit
0635fb7
·
verified ·
1 Parent(s): b07c26b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -27
app.py CHANGED
@@ -17,9 +17,12 @@ VELOCITY_FACTOR = 0.5
17
  FRICTION = 0.98
18
  BOUNCE_FACTOR = -0.8
19
 
 
 
 
20
  # Initialize session state
21
  if "player_name" not in st.session_state:
22
- st.session_state.player_name = f"Player_{random.randint(1000, 9999)}"
23
  if "selected_player" not in st.session_state:
24
  st.session_state.selected_player = None
25
  if "player_color" not in st.session_state:
@@ -123,8 +126,8 @@ def generate_svg(game_state):
123
  svg += f'<animate attributeName="r" values="{PLAYER_SIZE // 8};{PLAYER_SIZE // 10};{PLAYER_SIZE // 8}" dur="3s" repeatCount="indefinite" />'
124
  svg += '</circle>'
125
 
126
- # Player name
127
- svg += f'<text x="{x}" y="{y + PLAYER_SIZE // 2 + 15}" text-anchor="middle" fill="black" font-size="12" font-weight="bold">{player[:3].upper()}</text>'
128
 
129
  svg += '</g>'
130
 
@@ -142,8 +145,10 @@ def generate_svg(game_state):
142
  st.set_page_config(layout="wide", page_title="Enhanced Multiplayer Grid Game")
143
  st.title("Enhanced Multiplayer Grid Game")
144
 
145
- # Display player name and allow updates
146
- col1, col2 = st.columns([3, 1])
 
 
147
  with col1:
148
  player_name = st.text_input("Your name", value=st.session_state.player_name)
149
  if player_name != st.session_state.player_name:
@@ -151,7 +156,25 @@ with col1:
151
  update_player_position(player_name, 0, 0)
152
 
153
  with col2:
154
- st.color_picker("Choose your color", value=st.session_state.player_color, key="player_color")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
  # Create grid
157
  grid = st.empty()
@@ -160,26 +183,21 @@ grid = st.empty()
160
  js_code = """
161
  let keyState = {};
162
  let lastUpdateTime = Date.now();
163
-
164
  document.addEventListener('keydown', (e) => {
165
  keyState[e.key.toLowerCase()] = true;
166
  });
167
-
168
  document.addEventListener('keyup', (e) => {
169
  keyState[e.key.toLowerCase()] = false;
170
  });
171
-
172
  function updatePlayerPosition() {
173
  const now = Date.now();
174
  const dt = (now - lastUpdateTime) / 1000; // Time difference in seconds
175
  lastUpdateTime = now;
176
-
177
  let vx = 0, vy = 0;
178
  if (keyState['w']) vy -= 1;
179
  if (keyState['s']) vy += 1;
180
  if (keyState['a']) vx -= 1;
181
  if (keyState['d']) vx += 1;
182
-
183
  if (vx !== 0 || vy !== 0) {
184
  const magnitude = Math.sqrt(vx * vx + vy * vy);
185
  vx /= magnitude;
@@ -187,9 +205,7 @@ function updatePlayerPosition() {
187
  window.Streamlit.setComponentValue({vx: vx * dt, vy: vy * dt});
188
  }
189
  }
190
-
191
  setInterval(updatePlayerPosition, 50); // Update every 50ms for smooth movement
192
-
193
  function movePlayer(playerId, x, y) {
194
  const player = document.getElementById(playerId);
195
  if (player) {
@@ -209,20 +225,6 @@ if "obstacles" not in game_state:
209
  ]
210
  save_game_state(game_state)
211
 
212
- # Movement buttons
213
- col1, col2, col3 = st.columns(3)
214
- with col1:
215
- if st.button("↑"):
216
- update_player_position(st.session_state.player_name, 0, -1)
217
- with col2:
218
- if st.button("←"):
219
- update_player_position(st.session_state.player_name, -1, 0)
220
- if st.button("→"):
221
- update_player_position(st.session_state.player_name, 1, 0)
222
- with col3:
223
- if st.button("↓"):
224
- update_player_position(st.session_state.player_name, 0, 1)
225
-
226
  # Main game loop
227
  def main():
228
  while True:
 
17
  FRICTION = 0.98
18
  BOUNCE_FACTOR = -0.8
19
 
20
+ # List of common names
21
+ COMMON_NAMES = ["Emma", "Liam", "Olivia", "Noah", "Ava", "Ethan", "Sophia", "Mason", "Isabella", "William"]
22
+
23
  # Initialize session state
24
  if "player_name" not in st.session_state:
25
+ st.session_state.player_name = random.choice(COMMON_NAMES)
26
  if "selected_player" not in st.session_state:
27
  st.session_state.selected_player = None
28
  if "player_color" not in st.session_state:
 
126
  svg += f'<animate attributeName="r" values="{PLAYER_SIZE // 8};{PLAYER_SIZE // 10};{PLAYER_SIZE // 8}" dur="3s" repeatCount="indefinite" />'
127
  svg += '</circle>'
128
 
129
+ # Player name (full name)
130
+ svg += f'<text x="{x}" y="{y + PLAYER_SIZE // 2 + 15}" text-anchor="middle" fill="black" font-size="10" font-weight="bold">{player}</text>'
131
 
132
  svg += '</g>'
133
 
 
145
  st.set_page_config(layout="wide", page_title="Enhanced Multiplayer Grid Game")
146
  st.title("Enhanced Multiplayer Grid Game")
147
 
148
+ # Controls section
149
+ st.markdown("### Game Controls")
150
+ col1, col2, col3, col4, col5 = st.columns([2, 1, 1, 1, 2])
151
+
152
  with col1:
153
  player_name = st.text_input("Your name", value=st.session_state.player_name)
154
  if player_name != st.session_state.player_name:
 
156
  update_player_position(player_name, 0, 0)
157
 
158
  with col2:
159
+ st.color_picker("Choose color", value=st.session_state.player_color, key="player_color")
160
+
161
+ with col3:
162
+ if st.button("↑"):
163
+ update_player_position(st.session_state.player_name, 0, -1)
164
+ if st.button("↓"):
165
+ update_player_position(st.session_state.player_name, 0, 1)
166
+
167
+ with col4:
168
+ col4_1, col4_2, col4_3 = st.columns(3)
169
+ with col4_1:
170
+ if st.button("←"):
171
+ update_player_position(st.session_state.player_name, -1, 0)
172
+ with col4_3:
173
+ if st.button("→"):
174
+ update_player_position(st.session_state.player_name, 1, 0)
175
+
176
+ with col5:
177
+ st.markdown("Use WASD keys for movement")
178
 
179
  # Create grid
180
  grid = st.empty()
 
183
  js_code = """
184
  let keyState = {};
185
  let lastUpdateTime = Date.now();
 
186
  document.addEventListener('keydown', (e) => {
187
  keyState[e.key.toLowerCase()] = true;
188
  });
 
189
  document.addEventListener('keyup', (e) => {
190
  keyState[e.key.toLowerCase()] = false;
191
  });
 
192
  function updatePlayerPosition() {
193
  const now = Date.now();
194
  const dt = (now - lastUpdateTime) / 1000; // Time difference in seconds
195
  lastUpdateTime = now;
 
196
  let vx = 0, vy = 0;
197
  if (keyState['w']) vy -= 1;
198
  if (keyState['s']) vy += 1;
199
  if (keyState['a']) vx -= 1;
200
  if (keyState['d']) vx += 1;
 
201
  if (vx !== 0 || vy !== 0) {
202
  const magnitude = Math.sqrt(vx * vx + vy * vy);
203
  vx /= magnitude;
 
205
  window.Streamlit.setComponentValue({vx: vx * dt, vy: vy * dt});
206
  }
207
  }
 
208
  setInterval(updatePlayerPosition, 50); // Update every 50ms for smooth movement
 
209
  function movePlayer(playerId, x, y) {
210
  const player = document.getElementById(playerId);
211
  if (player) {
 
225
  ]
226
  save_game_state(game_state)
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  # Main game loop
229
  def main():
230
  while True: