On 17/10/13 21:09, Zaid Saeed wrote:
class YellowCar(pygame.sprite.Sprite):

     def __init__(self):
         pygame.sprite.Sprite.__init__(self)
         self.image = pygame.image.load("yellow.png")
         self.image = pygame.transform.scale(self.image,(50, 75))
         self.rect = self.image.get_rect()

     def update(self):
         self.rect.centery += self.dy
         if self.rect.top > screen.get_height():
             self.reset()

     def reset(self):
         self.rect.bottom = 0
         self.rect.centerx = random.randrange(190, screen.get_width())
         self.dy = random.randrange(10, 30)

Update uses dy but it is only set in reset(). If you call update
before reset you will get the error.

Now in your Game() code we find:

        if hitCar:
            redCar.sndThunder.play()
            scoreboard.lives -= 1
            if scoreboard.lives <= 0:
                keepGoing = False
            for theCar in hitCar:
                theCar.reset()

        # allSprites.clear(screen, background)
        goodSprites.update()
        badSprites.update()
        scoreSprite.update()

So any updated car not in hitcar will not have
been reset and so you will have an error.

It's best (for your sanity) to initialise all class
attributes in __init__.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to