Python Python Collections Dungeon Game Hit points

I am receiving expected results with this code locally. Is my logic off from the expected results of the challenge?

I have run this code locally and it has returned all of the results matching what is in the examples and I even added some test cases of my own that resulted in the results I would expect from this code. Am I missing something with the requirements of the challenge?

movement.py
# EXAMPLES:
# move((1, 1, 10), (-1, 0)) => (0, 1, 10)
# move((0, 1, 10), (-1, 0)) => (0, 1, 5)
# move((0, 9, 5), (0, 1)) => (0, 9, 0)

def move(player, direction):
    x, y, hp = player
    dx, dy = direction

    if x + dx < 0:
        x = 0
        hp -= 5
    elif x + dx > 9:
        x = 9
        hp -= 5
    else:
        x += dx

    if y + dy < 0:
        y = 0
        hp -= 5
    elif y + dy > 9:
        y = 9
        hp -= 5
    else:
        y += dy

    return x, y, hp

1 Answer

Steven Parker
Steven Parker
168,640 Points

You're really close, but if movement in either dimension would hit a wall, the original position should be returned unchanged along with the lowered hit points. Modifying the position is most likely the reason the validation does not pass.