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

Sean Flood
Sean Flood
13,370 Points

Dungeon game finished but character wont move

i finished the dungeon game and went over the whole code to make sure it was correct and it runs but when i enter a LEFT RIGHT UP DOWN command the character doesnt move.

3 Answers

Sean Flood
Sean Flood
13,370 Points

could you tell me how to paste it? every time i paste it, it pastes in a funny way

Shawn Denham
PRO
Shawn Denham
Pro Student 16,787 Points

Wrap your code with 3 backticks (```) on the line before and after. If you specify the language after the first set of backticks, that'll help us with syntax highlighting.

      ```python
      Your code here
      ```
Sean Flood
Sean Flood
13,370 Points
import random
import os 


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(output, end=line_end) 


def game_loop():

    monster, door, player = get_locations()

    while True:
        draw_map(player)
        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 **op bad move!** \n')
        clear_screen() 





clear_screen() 
print('Welcome to the dungeon!')
input('Press return to start!')
clear_screen()
game_loop()
    ```

. Jhj