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