i am having problems with my code, it does not work when i run it and it says “need an object” at the line i marked.
here is my code:
You must escort a powerful magical ring back to town to be studied.
The goal is to escape, not fight. More ogres lurk in the surrounding mountains!
Make a circle of soldiers around the peasant!
We give you two functions to help with this:
findSoldierOffset figures out the position a soldier should stand at in relation to the peasant.
The first argument ‘soldiers’ should be an array of your soldiers.
The second argument ‘i’ is the index of the soldier (in soldiers) you want to find the position for.
def findSoldierOffset(soldiers, i):
soldier = soldiers[i]
angle = i * 360 / len(soldiers)
return radialToCartesian(5, angle)
This function does the math to determine the offset a soldier should stand at.
def radialToCartesian(radius, degrees):
radians = Math.PI / 180 * degrees
xOffset = radius * Math.cos(radians)
yOffset = radius * Math.sin(radians)
return {“x”: xOffset, “y”: yOffset}
peasant = hero.findByType(“peasant”)[0]
Use findByType to get an array of your soldiers.
while True:
# Use a for-loop to iterate over range(len(soldiers)).
# Use a for-loop to iterate over your array of soldiers.
soldiers = hero.findByType(“soldier”) #<------------- this is where i am having the problem
for i in len(soldiers):
soldier = soldiers[i]
offset = findSoldierOffset(soldiers, i)
offsetX = peasant.pos.x + offset.x
offsetY = peasant.pos.y + offset.y
position = {“x”: offsetY, “y”: offsetY}
hero.command(soldier, “move”, position)
# Find the offset for a soldier.
# Add the offset.x and offset.y to the peasant’s pos.x and pos.y.
# Command the soldier to move to the new offset position.
# The hero should keep pace with the peasant!
hero.move({“x”: hero.pos.x + 0.2, “y”: hero.pos.y})