# [Solved] Sowing fire help!

#1

this is my code(I can’t build the fire traps):

``````# Goal: build three rows of nine fire-traps.

# Returns "retreat", "attack", "start-next-trap-column", or "build-next-trap-in-column"
def chooseStrategy():
enemies = hero.findEnemies()

# If there are overwhelming ogre forces, return the "retreat" strategy.
if len(enemies) > 20:
return "retreat"

if len(enemies)<20:
return "attack"
# Use x % 9 is 0 to see if x is divisible by 9.
# Use len(self.built) to see how many traps you have built.
# If you have finished a column of 9 traps, return "start-next-trap-column"

# Otherwise, return "build-next-trap-in-column"
else:
return "build-next-trap-in-column"

trapsInColumn = 9
startX = 40
columnX = startX

# Build the next trap in a column in the correct place.
def buildNextTrapInColumn(columnX,numTraps):
# Change newY to use % to wrap around and only build trapsInColumn (9) traps per column
newY = 7 * (numTraps%trapsInColumn) + 10
if hero.pos.y < newY:
hero.move({"x": columnX - 5, "y": newY})
else:
buildTrap(columnX,newY)

# Start a new column of traps.
def startNextTrapColumn(columnX, numTraps):
newX = startX - (Math.floor(numTraps / trapsInColumn) * 6)
if hero.pos.y > 10:
hero.move({"x": newX - 5, "y": 10})
return columnX
else:
buildTrap(newX,10)
return newX

def buildTrap(x, y):
hero.buildXY("fire-trap", x, y)

def commandAttack():
# Have your griffin riders fend off the attackers.
friends = hero.findFriends()
for friend in friends:
enemy = friend.findNearestEnemy()

if friend.type=="griffin-rider":
hero.command(friend, "attack", enemy)
pass

def commandRetreat():
hero.say("Retreat!")
# You and your griffin riders retreat to safety behind the traps.
hero.moveXY(4, 42)
hero.command(friend, "move", hero.pos)

while True:
strategy = chooseStrategy()
if strategy == "attack":
commandAttack()
elif strategy == "build-next-trap-in-column":
buildNextTrapInColumn(columnX, len(hero.built))
elif strategy == "start-next-trap-column":
columnX = startNextTrapColumn(columnX, len(hero.built))
elif strategy == "retreat":
commandRetreat()

``````

#2

Or this doesn’t work:

``````def chooseStrategy():
enemies = hero.findEnemies()

# If there are overwhelming ogre forces, return the "retreat" strategy.
if len(enemies) > 20:
return "retreat"
if len(enemies)<20:
return "attack"
# Use x % 9 is 0 to see if x is divisible by 9.
# Use len(self.built) to see how many traps you have built.
# If you have finished a column of 9 traps, return "start-next-trap-column"
if (x%9)==0:
return "start-next-trap-column"

else:
return "build-next-trap-in-column"

trapsInColumn = 9
startX = 40
columnX = startX

# Build the next trap in a column in the correct place.
def buildNextTrapInColumn(columnX,numTraps):
# Change newY to use % to wrap around and only build trapsInColumn (9) traps per column
newY = 7 * (numTraps%trapsInColumn) + 10
if hero.pos.y < newY:
hero.move({"x": columnX - 5, "y": newY})
else:
buildTrap(columnX,newY)

# Start a new column of traps.
def startNextTrapColumn(columnX, numTraps):
newX = startX - (Math.floor(numTraps / trapsInColumn) * 6)
if hero.pos.y > 10:
hero.move({"x": newX - 5, "y": 10})
return columnX
else:
buildTrap(newX,10)
return newX

def buildTrap(x, y):
hero.buildXY("fire-trap", x, y)

def commandAttack():
# Have your griffin riders fend off the attackers.
friends = hero.findFriends()
for friend in friends:
enemy = friend.findNearestEnemy()

if friend.type=="griffin-rider":
hero.command(friend, "attack", enemy)
pass

def commandRetreat():
hero.say("Retreat!")
# You and your griffin riders retreat to safety behind the traps.
hero.moveXY(4, 42)
hero.command(friend, "move", hero.pos)

while True:
strategy = chooseStrategy()
if strategy == "attack":
commandAttack()
elif strategy == "build-next-trap-in-column":
buildNextTrapInColumn(columnX, len(hero.built))
elif strategy == "start-next-trap-column":
columnX = startNextTrapColumn(columnX, len(hero.built))
elif strategy == "retreat":
commandRetreat()

``````

#3

You need an `if enemy`

#4

I can command my griffin riders to attack but there is something wrong here:
`if (x%9)==0: return "start-next-trap-column"`

#5

Was that supposed to be there? Also is `return "start-next-trap-column"` an actual command? Or just a method?

#6

It is. Scroll down to see more code.

#8

Yeah. Just figured that out but you beat me to the response. Nice Job!

#9

One more thing. I have a question. Do you know in the choose strategy function what to do in the if statements. My character just always commands the griffin riders to attack but

#10

hmm, you need to check if there is actually an enemy. Otherwise just let the hero build.

#11

Thanks a lot! I added an if statement for that and the code worked! I knew something was missing!

#12

I’m so happy it worked!