diff options
| author | mo khan <mo@mokhan.ca> | 2025-06-25 18:00:40 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-06-25 18:00:40 -0600 |
| commit | bc582696c543c7ae0217c01e13c9acc9dea26d45 (patch) | |
| tree | 152a31f7f885bcb5d57709cbcbba25518541153c | |
| parent | 5d6c442285d514a5c2c84849c4e9e2438869efd1 (diff) | |
feat: Add room numbers with legend and clean up map connectionsmain
- Changed from room names back to consistent room numbers ([β
01], [β02], etc.)
- Added comprehensive room legend showing full names and status
- Fixed arrows showing connections to hidden/unknown rooms
- Map now properly hides connections to undiscovered areas
- Legend shows: room number, full descriptive name, and current status
- Professional, clean map display with consistent formatting
Example: [β
21] shows in map, legend shows "21: Starting Chamber (β
HERE)"
π€ Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
| -rw-r--r-- | AdventureGame.py | 82 |
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(): |
