[Solved] Help with Wild horses python

I can’t solve Wild horses. I’ve been working at it for a while. It said "cannot read x of undefined. " here is my code:
while True:
# How do you find the nearest friendly unit?
# horse = ?
horse = hero.findFriends()
if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7

if x1 >= 1:
# Move to the horse's y position but use x1 for the x position.
hero.moveXY(x1,horse.pos.y)
elif x2 <= 79:
# Move to the horse's y position but use x2 for the x position.
hero.moveXY(x2,horse.pos.y)
distance = hero.distanceTo(horse)
if distance <= 10:
hero.say("Whoa")
# Move to the red x to return the horse to the farm
hero.moveXY(27,54)
# Move back out into the pasture to begin looking for the next horse.
hero.moveXY(43,33)
1 Like

Please make sure that ALL of your code is pasted in between the triple back ticks or only some of it will be formatted properly.

oh,sorry. Fixed.

while True:
# How do you find the nearest friendly unit?
# horse = ?
horse = hero.findFriends()
if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7
if x1 >= 1:
# Move to the horse's y position but use x1 for the x position.
hero.moveXY(x1,horse.pos.y)
elif x2 <= 79:
# Move to the horse's y position but use x2 for the x position.
hero.moveXY(x2,horse.pos.y)
distance = hero.distanceTo(horse)
if distance <= 10:
hero.say("Whoa")
# Move to the red x to return the horse to the farm
hero.moveXY(27,54)
# Move back out into the pasture to begin looking for the next horse.
hero.moveXY(43,33)

The error code is correct. You have defined the variable, horse, as an array. Then, in your code, you are looking for a particular horse and its position. You have not defined a single horse so it can only see an array of horses.

Your code is very close. Once you correct the variable definition it should work.

Thank you. Solved!

while True:
# How do you find the nearest friendly unit?
# horse = ?
horse = hero.findFriends()
if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7
if x1 >= 1:
# Move to the horse's y position but use x1 for the x position.
hero.moveXY(x1,horse.pos.y)
elif x2 <= 79:
# Move to the horse's y position but use x2 for the x position.
hero.moveXY(x2,horse.pos.y)
distance = hero.distanceTo(horse)
if distance <= 10:
hero.say("Whoa")
# Move to the red x to return the horse to the farm
hero.moveXY(27,54)
# Move back out into the pasture to begin looking for the next horse.
hero.moveXY(43,33)

findFriends, gives you an array of all of your friends, but you have to find the nearest one.

1 Like

oh ok thank you so much(20 char)

(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)

I can’t figure out why this isn’t working.

while True:
# How do you find the nearest friendly unit?
# horse = ?
horse = hero.findNearestFriend()

if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7

if x1 >= 1:
# Move to the horse's y position but use x1 for the x position.
hero.moveXY(x1, horse.pos.x)
elif x2 <= 79:
# Move to the horse's y position but use x2 for the x position.
hero.moveXY(x2, horse.pos.y)
distance = hero.distanceTo(horse)
if distance <= 10:
hero.say("Whoa")
# Move to the red x to return the horse to the farm.
hero.moveXY(28, 54)
# Move back out into the pasture to begin looking for the next horse.
hero.moveXY(44, 30)

Neither horse = hero.findNearestFriend() or horse = hero.findFriends() work.

@RangerGrant9307, I am here.

xD. Well, x1 and x2 are x coordinates. hrose.pos.x is also x coordinate. You tried to move xy to 2 x coordinates. See the problem?

ahem My new code:

while True:
# How do you find the nearest friendly unit?
# horse = ?
horse = hero.findNearestFriend()

if horse:
x1 = horse.pos.x - 7
x2 = horse.pos.x + 7

if x1 >= 1:
# Move to the horse's y position but use x1 for the x position.
hero.moveXY(x1, horse.pos.y)
elif x2 <= 79:
# Move to the horse's y position but use x2 for the x position.
hero.moveXY(x2, horse.pos.y)
distance = hero.distanceTo(horse)
if distance <= 10:
hero.say("Whoa")
# Move to the red x to return the horse to the farm.
hero.moveXY(28, 54)
# Move back out into the pasture to begin looking for the next horse.
hero.moveXY(44, 30)

My top line gets an error saying Type Error.

horse = hero.findNearestFriend() doesn’t exist.
Use hero.findNearest(hero.findFriends())

Thanks! This worked too once I added horse = hero.findNearest(hero.findFriends())

did u pass da level

1 Like

I sure did. Thanks again.

mark as solution plz

She can’t cause this is not her topic.

grant_is_stupid