## Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

### Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

# Here is my extended version of the dungeon game.

```import os
import random

def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')

def get_locations(CELLS):
return random.sample(CELLS, 4) #does not include repeats

def move_player(player, move):
x, y = player
if move == "LEFT":
x -= 1
if move == "RIGHT":
x += 1
if move == "UP":
y -= 1
if move == "DOWN":
y += 1
return x, y

def get_moves(player, play_field):
moves = ["LEFT", "RIGHT", "UP", "DOWN"]
x, y = player
if x == 0:
moves.remove("LEFT")
if x == play_field - 1:
moves.remove("RIGHT")
if y == 0:
moves.remove("UP")
if y == play_field - 1:
moves.remove("DOWN")
return moves

def draw_map(player, path, CELLS, play_field):
print(" _"*play_field)
tile = "|{}"

for cell in CELLS:
x, y = cell
if x < play_field - 1:
line_end = ""
if cell == player:
output = tile.format("X")
elif cell in path:
output = tile.format("*")
else:
output = tile.format("_")
else:
line_end = "\n"
if cell == player:
output = tile.format("X|")
elif cell in path:
output = tile.format("*|")
else:
output = tile.format("_|")
print(output, end=line_end)

def draw_cheat_map(player, path, CELLS, play_field, door, monster1, monster2):
print(" _"*play_field)
tile = "|{}"

for cell in CELLS:
x, y = cell
if x < play_field - 1:
line_end = ""
if cell == player:
output = tile.format("X")
elif cell == monster1:
output = tile.format("M")
elif cell == monster2:
output = tile.format("M")
elif cell == door:
output = tile.format("D")
elif cell in path:
output = tile.format("*")
else:
output = tile.format("_")
else:
line_end = "\n"
if cell == player:
output = tile.format("X|")
elif cell == monster1:
output = tile.format("M|")
elif cell == monster2:
output = tile.format("M|")
elif cell == door:
output = tile.format("D|")
elif cell in path:
output = tile.format("*|")
else:
output = tile.format("_|")
print(output, end=line_end)

def game_loop():
while True:
try:
CELLS = []
play_field = int(input("Enter a number for size of playing field 2 or greater: "))
if play_field >= 2:
for y in range(play_field):
for x in range(play_field):
CELLS.append((x, y))
monster1, monster2, door, player = get_locations(CELLS)
playing = True
path = []
score = 0
break
else:
print("The playing field must be 2 or greater!")
except ValueError:

while playing:
clear_screen()

draw_map(player, path, CELLS, play_field)
valid_moves = get_moves(player, play_field)
print("You're currently in  room {}".format(player))
print("Current score: {} PTS".format(score))
print("You can move {}".format(", ".join(valid_moves)))
print("Enter QUIT to quit or CHEAT to cheat")
path.append(player)
score += 5
move = input("> ").upper()
if move == "QUIT":
print("\n ** See you next time ** \n")
break
elif move == "CHEAT":
clear_screen()
draw_cheat_map(player, path, CELLS, play_field, door, monster1, monster2)
print("Icon key: X = Player; M = Monsters; D = Door.")
input("Press Enter to stop cheating. ")
continue
if move in valid_moves:
player = move_player(player, move)
if player == monster1 or player == monster2:
print("\n ** oh no! The monster got you! Better luck next time! **\n")
playing = False
if player == door:
print("\n ** You escaped! Congratulations! **\n")
playing = False
else:
input("\n ** Walls are hard! Don't run into them! **\n")
continue
else:
if input("Play again? [Y/n] ").lower() != "n":
game_loop()

clear_screen()
print("Welcome to the dungeon!")
input("Press Enter to start game! ")
clear_screen()
game_loop()
``` 