Welcome to the forum @Samu2015 ! This is a friendly place where you can ask help on levels, report bugs, or just chat with other coders! Don’t forget to read the guidelines if you haven’t yet. Have a great time!
Please for the next time, format your full code using this button to better help you
Get the hero and the peasant to the south.
The function move your hero down along the center line.
def moveDownCenter():
x = 40
y = hero.pos.y - 12
hero.moveXY(x, y)
The function build a fence on the right of something.
def buildRightOf(something):
# buildXY a “fence” 20 meters to something’s right.
x = 40 + 20
y = hero.pos.y
hero.buildXY(“fence”, x, y)
pass
The function build a fence on the left of something.
def buildLeftOf(something):
# buildXY a “fence” 20 meters to something’s left.
x = 40 - 20
y = hero.pos.y
hero.buildXY(“fence”, x, y)
pass
while True:
ogre = hero.findNearestEnemy()
coin = hero.findNearestItem()
if ogre.pos.x < 40:
buildRightOf(ogre)
elif:
buildLeftOf(ogre)
elif coin:
hero.move(coin)
moveDownCenter()
pass
So in both of the functions that you build in them, the x should be +20 or -20 the position of the parameter you entered in paranthesis called “something”, try that, if it didn’t work, then please post your code after editing
Please format your code, I’ve done it for you this time
# Get the hero and the peasant to the south.
# The function move your hero down along the center line.
def moveDownCenter():
x = 40
y = hero.pos.y - 12
hero.moveXY(x, y)
# The function build a fence on the right of something.
def buildRightOf(something):
# buildXY a "fence" 20 meters to something’s right.
x = 40 + 20
y = hero.pos.y
hero.buildXY("fence", x, y)
pass
# The function build a fence on the left of something.
def buildLeftOf(something):
# buildXY a "fence" 20 meters to something’s left.
x = 40 - 20
y = hero.pos.y
hero.buildXY("fence", x, y)
pass
while True:
ogre = hero.findNearestEnemy()
coin = hero.findNearestItem()
if ogre.pos.x < 40:
buildRightOf(ogre)
elif:
buildLeftOf(ogre)
elif coin:
hero.move(coin)
moveDownCenter()
pass
The “something” is a parameter passed in a argument later when the function is called. So you need to use something.pos.x instead of 40
I created the code for the function buildRightOf(something), you will do the same for the buildLeftOf(something)
def buildRightOf(something):
# buildXY a "fence" 20 meters to something’s right.
somePos = something.pos # Find the position of something
x = somePos.x + 20
y = somePos.y
hero.buildXY("fence", x, y)
pass
Also, for the while True part, you should build for BOTH coins and ogres, instead of collecting it.
while True:
ogre = hero.findNearestEnemy()
coin = hero.findNearestItem()
if ogre:
buildLeftOf(ogre) # ogre is an argument when the function is called
elif coin: # elif statment shouldn't be empty
#???
moveDownCenter()
I left the elif statment empty, you should build right of the coin. You can do it by yourself