awacke1 commited on
Commit
e604411
Β·
verified Β·
1 Parent(s): 6654db0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -89
app.py CHANGED
@@ -1,97 +1,41 @@
1
  import streamlit as st
2
- import random
3
  import numpy as np
 
4
 
5
- # Initialize or reset the game state with all features
6
- def initialize_state():
7
- st.session_state.update({
8
- 'character': None,
9
- 'knowledge': 0,
10
- 'inventory': [],
11
- 'map_position': (2, 2), # Center position in a 5x5 grid
12
- 'current_location': 'forest edge',
13
- 'initialized': True
14
- })
15
-
16
- if 'initialized' not in st.session_state:
17
- initialize_state()
18
-
19
- # Characters and descriptions
20
- characters = {
21
- "Wizard": {"emoji": "πŸ§™β€β™‚οΈ", "knowledge": 5, "description": "Wise and powerful, connected to magical forces."},
22
- "Witch": {"emoji": "πŸ§™β€β™€οΈ", "knowledge": 5, "description": "Cunning, skilled in potions and spells."}
23
- }
24
-
25
- # Locations and emoji grid maps
26
- locations = {
27
- 'forest edge': np.array([["🌲", "🌳", "πŸƒ", "🌲", "🌿"], ["πŸ„", "πŸƒ", "🌳", "πŸƒ", "πŸ„"], ["🌲", "🚢", "🌿", "πŸƒ", "🌳"], ["🌳", "πŸƒ", "πŸ„", "🌿", "🌲"], ["🌲", "πŸƒ", "🌳", "πŸƒ", "🌿"]]),
28
- 'deep forest': np.array([["🌲", "🌿", "πŸƒ", "🌳", "πŸ„"], ["🌿", "🌳", "πŸƒ", "🌲", "🌿"], ["πŸ„", "πŸƒ", "🚢", "πŸƒ", "🌳"], ["🌳", "🌲", "πŸƒ", "πŸ„", "🌿"], ["πŸƒ", "πŸƒ", "🌳", "🌲", "🌿"]]),
29
- # Add other locations with corresponding maps
30
- }
31
-
32
- # Actions and movement
33
- directions = {"North": (-1, 0), "South": (1, 0), "West": (0, -1), "East": (0, 1)}
34
 
35
- # Main Streamlit application
36
  def main():
37
- st.title("The Magic Workshop In The Great Tree 🌳✨")
38
- if st.session_state.character is None:
39
- choose_character()
40
- else:
41
- display_character_info()
42
- navigate_world()
43
-
44
- def choose_character():
45
- st.header("Choose your character πŸ§™β€β™‚οΈπŸ§™β€β™€οΈ")
46
- character = st.selectbox("Select your character", options=list(characters.keys()), format_func=lambda x: f"{x} {characters[x]['emoji']}")
47
- if st.button("Choose"):
48
- st.session_state.character = characters[character]
49
- st.experimental_rerun()
50
-
51
- def display_character_info():
52
- char = st.session_state.character
53
- st.subheader(f"Character: {char['description']}")
54
- st.write(f"Knowledge: {char['knowledge']}")
55
- if st.session_state.inventory:
56
- st.write(f"Inventory: {', '.join(st.session_state.inventory)}")
57
- else:
58
- st.write("Inventory: Empty")
59
-
60
- def navigate_world():
61
- st.header("Explore the World")
62
- location = st.session_state.current_location
63
- st.write(f"You are in the {location}.")
64
- display_map(location)
65
- move_direction = st.selectbox("Which direction would you like to go?", options=list(directions.keys()))
66
  if st.button("Move"):
67
- move_player(move_direction)
68
- handle_location_change()
69
-
70
- def display_map(location):
71
- map_with_player = locations[location]
72
- map_display = "\n".join(["".join(row) for row in map_with_player])
73
- st.text(map_display)
74
-
75
- def move_player(direction):
76
- dx, dy = directions[direction]
77
- x, y = st.session_state.map_position
78
- nx, ny = x + dx, y + dy
79
- if 0 <= nx < 5 and 0 <= ny < 5: # Ensure new position is within bounds
80
- # Update map position
81
- st.session_state.map_position = (nx, ny)
82
- # Update the character's position on the map
83
- update_map_position(st.session_state.current_location, st.session_state.map_position)
84
-
85
- def update_map_position(location, new_position):
86
- # Remove old position
87
- locations[location][st.session_state.map_position] = "πŸƒ" # Replace with default terrain
88
- # Set new position
89
- st.session_state.map_position = new_position
90
- locations[location][new_position] = "🚢"
91
-
92
- def handle_location_change():
93
- # This function can be expanded to include logic for handling encounters, finding items, etc., based on the new location
94
- pass
95
 
96
  if __name__ == "__main__":
97
- main()
 
1
  import streamlit as st
 
2
  import numpy as np
3
+ import random
4
 
5
+ # Expanded set of emojis for landscape elements
6
+ emojis = ["🌳", "πŸƒ", "πŸ„", "🌲", "🌿", "🏠", "🏰", "πŸ—Ό", "πŸ›€οΈ", "🌊", "🏞️", "🌁", "🌾", "🏜️", "🏝️", "πŸ›–", "πŸ›€οΈ", "πŸ›£οΈ", "πŸ•οΈ", "πŸŒ‹", "⛰️", "🚢", "🧱", "🌡", "🍁", "🌼", "🌻", "🌺", "🏑", "πŸ—ΊοΈ"]
7
+
8
+ def initialize_emoji_map(size):
9
+ """Initialize an emoji map with diverse landscape elements."""
10
+ return np.random.choice(emojis, (size, size))
11
+
12
+ def display_emoji_map(emoji_map):
13
+ """Convert the emoji map to a string for display."""
14
+ map_str = "\n".join(["".join(row) for row in emoji_map])
15
+ st.text(map_str)
16
+
17
+ def move_emojis(emoji_map, direction):
18
+ """Shift emojis in the specified direction with wrap-around."""
19
+ if direction == "North":
20
+ emoji_map = np.roll(emoji_map, 1, axis=0)
21
+ elif direction == "South":
22
+ emoji_map = np.roll(emoji_map, -1, axis=0)
23
+ elif direction == "West":
24
+ emoji_map = np.roll(emoji_map, 1, axis=1)
25
+ elif direction == "East":
26
+ emoji_map = np.roll(emoji_map, -1, axis=1)
27
+ return emoji_map
 
 
 
 
 
 
28
 
 
29
  def main():
30
+ st.title("Emoji Landscape Exploration")
31
+ size = st.slider("Grid Size", 5, 40, 40)
32
+ if 'emoji_map' not in st.session_state:
33
+ st.session_state.emoji_map = initialize_emoji_map(size)
34
+ display_emoji_map(st.session_state.emoji_map)
35
+ direction = st.selectbox("Move direction", ["North", "South", "East", "West"])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  if st.button("Move"):
37
+ st.session_state.emoji_map = move_emojis(st.session_state.emoji_map, direction)
38
+ st.experimental_rerun()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  if __name__ == "__main__":
41
+ main()