Python Python Collections Dungeon Game Hit points

Move function code challenge: need help understanding what is wrong or required.

Here is the code i gave:

def move(player, direction): x, y, hp = player a, b = direction

x += a
if x < 0:
    hp -= 5
    x = 0  # also tried x -= a
elif x > 9:
    hp -= 5 
    x = 9 # also tried x -= a
else:
    y += b 
    if y < 0:
        hp -= 5
        y = 0 # also tried y -= a

    elif y > 9:
        hp -= 5
        y = 9 # also tried y -= a


return x, y, hp

1 Answer

diogorferreira
diogorferreira
15,487 Points

Hello, the only problem with your code is that you're checking the player's current position instead of where they are trying to move to.

  • In this case to make it easier to understand I renamed your (a, b) variables into xdir and ydir (x - direction, y - direction).
  • After setting the variables you have to check if the player wants to move left or right, (if xdir is -1 or 1)
  • Then to make sure they don't cross the invisible border and leave the game so you'd have to check if they are on 0, or 9 as moving left on 0 would mean they exit and are moved to -1 and so on...
  • If it's a valid move then apply the change to their current position on x
  • You re-do the same thing for y
  • And finally return it
def move(player, direction):
    x, y, hp = player
    xdir, ydir = direction

    #Checking whether it moves right or left
    #-1 moves left, 1 moves right
    if xdir == -1:
        if x != 0:
            x -= 1
        else:
            hp -= 5

    elif xdir == 1:
        if x != 9:
            x += 1
        else:
            hp -= 5

    #Checking whether it moves up or down
    #-1 moves down, 1 moves up
    if ydir == -1:
        if y != 0:
            y -= 1
        else:
            hp -= 5

    elif ydir == 1:
        if y != 9:
            y += 1
        else:
            hp -= 5

    #Sending back the changed positions and hp
    return x, y, hp