Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Collections (2016, retired 2019) Dungeon Game Cartographer

Dungeon game Cartographer error in shell

Hi all, I have followed the video instructions but I am getting an error when I try to run the dungeon game. Can someone please help out! Thanks

Also, are we supposed to be able to come up with games ourselves at this stage? I can do the challenges but coming up with a game would be impossible.

Here is the error: Traceback (most recent call last):
File "dungeon_game.py", line 100, in <module>
game_loop()
File "dungeon_game.py", line 77, in game_loop
draw_map(player)
File "dungeon_game.py", line 70, in draw_map
print(ouput, end=line_end)
NameError: name 'ouput' is not defined

Here is the code: import os import random

draw grid

pick random location for player

pick random location for exit door

pick random location for monster

draw player in the grid

take input for movement

move player, unless invalid move (past edges of grid)

check for win/loss

clear screen and redraw grid

CELLS = [(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4), ]

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

def get_locations(): return random.sample(CELLS, 3)

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): moves = ["LEFT", "RIGHT", "UP", "DOWN"] x, y = player if x == 0: moves.remove("LEFT") if x == 4: moves.remove("RIGHT") if y == 0: moves.remove("UP") if y == 4: moves.remove("DOWN") return moves

def draw_map(player): print(" _"*5) tile = "|{}"

for cell in CELLS:
    x, y = cell
    if x < 4:
        line_end = ""
        if cell == player:
            output = tile.format("X")
        else:
            output = tile.format("_")
    else:
        line_end = "\n"
        if cell == player:
            output = tile.format("X|")
        else:
            output = tile.format("_|")
    print(ouput, end=line_end)          # LINE 70!!!!! #

def game_loop(): monster, door, player = get_locations()

while True:
    draw_map(player)                       # LINE 77!!!!! #
    valid_moves = get_moves(player)

    print("You're currently in room {}".format(player))
    print("You can move {}".format(", ".join(valid_moves)))
    print("Enter QUIT to quit")

    move = input("> ")
    move = move.upper()

    if move == 'QUIT':
        break
    if move in valid_moves:
        player = move_player(player, move)
    else:
        input("\n ** Walls are hard, dont run into them! **\n")
    clear_screen()

clear_screen() print("Welcome to the dungeon!") input("Press return to start!") clear_screen() game_loop() # LINE 100!!!!#

1 Answer

Majid Bilal
Majid Bilal
3,558 Points

It'd be good if you share your work area.