On 03/14/2013 06:38 PM, Matthew Ngaha wrote:
i cant seem to break out of  this loop. let me explain the variables you see:
>
> Enemy.ships = [] #an Enemy class variable that contains enemy ships
> self.missiles = [] an instance variable that appends how many Visible
> missiles my ship has fired
> Enemy.rects = [] an Enemy class variable that represents a rectangle
> for every ship in Enemy.ships
> Explosion() = a class where explosions occur
> QPoint() = is a pyqt function that takes a point x, y position as arguments
>
> im trying to destroy the ships if they hit a missile, even though i
> use pyqt this is mainly python code
>
> if Enemy.ships:
> for missile in self.missiles:
> for rect in Enemy.rects:
> if QPoint(missile.x + 5, missile.y) in rect:
> explosion = Explosion(rect.x(), rect.y())
> self.explosions.append(explosion)
> break
>
> once the missile has hit 1 Enemy.rect i want to break and go to the
> next missile so the missile is destroyed and doesnt hit another Enemy,
> but for some reason the break i have isnt working and the same missile
> sometimes is hitting 2 different rects on the same iteration. i have
> done the same loop using a simple print statements on strings greater
> than a certain length and it breaks correctly. anyone have any ideas
> why the break isnt breaking out of the nested/inner loop but instead
> continuing to loop through the Enemies?
>


Yes, break statement exits only the current loop, not all loops.

One good approach is to have a separate function or method with
both loops:

def attack(self, Enemy):
    for missile in self.missiles:
        for rect in Enemy.rects:
            if QPoint(missile.x + 5, missile.y) in rect:
                explosion = Explosion(rect.x(), rect.y())
                self.explosions.append(explosion)
                return


You could also set a flag and check it at the end of outer loop
and have a second break statement when the flag is set.

 HTH, -m



--
Lark's Tongue Guide to Python: http://lightbird.net/larks/

Fanaticism consists of redoubling your effort when you have forgotten your
aim.  George Santayana

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to