Infinite loop while using while loops


#1

I am trying to teach myself while loops in the cavern survival level.

I was running this code and it hung up with an infinite loop error. It did let me comment out the code. Am I returning out of while loop incorrectly? I figured that placing the instructions for what to do when n>4 on the same indent level as the while loop would work… but I’m working from incomplete knowledge here. I was hoping it would repeat “Done with while loop” while casting shockwave at enemies when the while loop was complete. Advice?

return;  // Commented out to stop infinite loop.
return;  // Commented out to stop infinite loop.
self.cast("haste", self)
n=0

loop:
    
    while n<5:
    
    # Find and attack the enemy inside a loop.
    # Use flags and your special moves to win!
    
        
        if self.canCast("haste", self):
            self.cast("haste", self)
        elif enemy:
            if self.canCast("root", enemy):
                self.cast("root", enemy)
            elif self.canCast("slow", enemy):
                self.cast("slow", enemy)
            else:
                n=n+1
    
        if n==0:
            if enemy:
                self.cast("shockwave", enemy)
        if n==1:
            self.moveXY(102, 20)
        if n==2:
            self.moveXY(99, 116)
        if n==3:
            self.moveXY(146,117)
        if n==4:
            self.moveXY(147,20)
    enemy=self.findNearest(self.findEnemies())
    self.say("Done with while loop")
    if self.canCast("haste", self):
        self.cast("haste", self)
    if self.canCast("shockwave", enemy):
        self.cast("shockwave", enemy)

#2

Ah man BunchofCrooks!

That solution is a good one, maybe it’s a syntax problem rather than a logic problem?


#3

Yeah, I was thinking it was syntax… did you get the same error?


#4

I’m using JS, Let me check.


#5

Yeah, not getting it either. Wondering if the coding for break; isn’t in yet and whether you could use that to shoot over to your “shockwave” and “loop is done” string


#6

Yeah, there are likely quite a few ways to do it without the While loop. I’m just trying to learn how to use a while loop.


#7

If there is no enemy (or none in range), you will never increment N and never leave the loop.


#8

Thanks! Nick helped me see the problem as well. I have it up and working now. The important thing is that I know how to use while loops now! achievement unlocked