summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AdventureGame.py82
1 files changed, 63 insertions, 19 deletions
diff --git a/AdventureGame.py b/AdventureGame.py
index 2791c29..6915075 100644
--- a/AdventureGame.py
+++ b/AdventureGame.py
@@ -666,14 +666,40 @@ def print_to_description(output, user_input=False):
description_widget.see(END)
def create_map_display():
- """Create a simple, working ASCII map"""
+ """Create a simple, working ASCII map with room names"""
# Count rooms for stats
visited_count = len(visited_rooms)
discovered_count = len(discovered_rooms)
total_rooms = 22
- # Start with the basic map template
+ # Define room names for legend
+ room_names = {
+ 1: "Entrance Chamber",
+ 2: "Serpent's Lair",
+ 3: "Marble Corridor",
+ 4: "Guard Post",
+ 5: "Treasure Chamber",
+ 6: "Rose Garden",
+ 7: "Spider's Web",
+ 8: "Armory",
+ 9: "Giant Spider's Domain",
+ 10: "Bat Cave",
+ 11: "Key Chamber",
+ 12: "Rat Warren",
+ 13: "Second Serpent's Den",
+ 14: "Emerald Chamber",
+ 15: "Shadow Spider's Lair",
+ 16: "Merchant's Shop",
+ 17: "Great Hall",
+ 18: "Nexus Chamber",
+ 19: "Crystal Cavern",
+ 20: "Abandoned Armory",
+ 21: "Starting Chamber",
+ 22: "Final Key Chamber"
+ }
+
+ # Start with the basic map template using numbers
template = [
" [001]<->[002]<->[003]<->[004]<->[005]",
" A ",
@@ -698,10 +724,10 @@ def create_map_display():
" [020] [021]<->[022] "
]
- # Convert template to list of lists for easy modification
- map_lines = [list(line) for line in template]
+ # Convert template to string for processing
+ map_text = "\n".join(template)
- # Replace room placeholders with actual status
+ # Replace room placeholders with status indicators
for room_num in range(1, 23):
old_text = f"[{room_num:03d}]"
@@ -714,22 +740,38 @@ def create_map_display():
else:
new_text = " " # Hide completely unknown rooms
- # Find and replace in each line
- for i, line in enumerate(map_lines):
- line_str = "".join(line)
- if old_text in line_str:
- new_line_str = line_str.replace(old_text, new_text)
- map_lines[i] = list(new_line_str)
+ map_text = map_text.replace(old_text, new_text)
- # Convert back to strings and remove empty lines
- final_lines = []
- for line in map_lines:
- line_str = "".join(line).rstrip()
- # Only include lines that have visible rooms
- if any(char in line_str for char in "★✓?"):
- final_lines.append(line_str)
+ # Clean up connections - remove arrows that connect to hidden rooms
+ import re
+ map_lines = map_text.split('\n')
+ cleaned_lines = []
- map_text = "\n".join(final_lines)
+ for line in map_lines:
+ # Remove arrows that connect to empty spaces (hidden rooms)
+ # Pattern: <-> followed by spaces, or spaces followed by <->
+ cleaned_line = re.sub(r'<-> ', ' ', line) # Remove arrow going to hidden room
+ cleaned_line = re.sub(r' <->', ' ', cleaned_line) # Remove arrow coming from hidden room
+ cleaned_line = re.sub(r'<-> ', ' ', cleaned_line) # Remove longer connections to hidden
+ cleaned_line = re.sub(r' <->', ' ', cleaned_line) # Remove longer connections from hidden
+
+ # Only include lines that have visible rooms or connections between visible rooms
+ if any(char in cleaned_line for char in "★✓?"):
+ cleaned_lines.append(cleaned_line.rstrip())
+
+ map_text = "\n".join(cleaned_lines)
+
+ # Build legend for visible rooms
+ legend_lines = []
+ all_visible_rooms = visited_rooms.union(discovered_rooms)
+ if all_visible_rooms:
+ legend_lines.append("ROOM LEGEND:")
+ for room_num in sorted(all_visible_rooms):
+ if room_num in room_names:
+ status = "★ HERE" if room_num == current_location else "✓ VISITED" if room_num in visited_rooms else "? DISCOVERED"
+ legend_lines.append(f" {room_num:02d}: {room_names[room_num]} ({status})")
+
+ legend_text = "\n".join(legend_lines)
return f"""🗺️ EXPLORATION MAP 🗺️
{'='*35}
@@ -738,6 +780,8 @@ Visited: {visited_count} Discovered: {discovered_count} Total: {total_rooms}
{'='*35}
{map_text}
+
+{legend_text}
"""
def update_map_display():