Check the docs. The second argument must be an instance or subclass of Group.
Cheers. Gumm On Mon, Feb 20, 2012 at 5:47 PM, sc...@scottolling.com < sc...@scottolling.com> wrote: > We're having a problem with the code below, which is returning this error: > > Traceback (most recent call last): > File > "C:\Users\HO\Desktop\USER\SERVER.Master\Python\Games\LightSlayer\LightSlayer.py", > line 95, > in <module> > if pygame.sprite.spritecollide(monster, player, False): > File "C:\Python25\lib\site-packages\pygame\sprite.py", line 1344, in > spritecollide > for s in group: > TypeError: 'Player' object is not iterable > > - - - > > Any feedback is appreciated. Thanks! > > code follows . . . > > - - - > > > #(c) 2012 Henry Olling > > import pygame, sys > from pygame.color import THECOLORS > > class Player(pygame.sprite.Sprite): > def __init__(self, image_file, speed, location): > pygame.sprite.Sprite.__init__(self) #call Sprite initializer > self.image = pygame.image.load(image_file) > self.rect = self.image.get_rect() > self.rect.left, self.rect.top = location > self.speed = speed > > class Monster(pygame.sprite.Sprite): > def __init__(self, image_file, speed, location): > pygame.sprite.Sprite.__init__(self) #call Sprite initializer > self.image = pygame.image.load(image_file) > self.rect = self.image.get_rect() > self.rect.left, self.rect.top = location > self.speed = speed > > def move(self): > self.rect = self.rect.move(self.speed) > # bounce off the sides of the window > if self.rect.left < 0 or self.rect.right > screen.get_width(): > self.speed[0] = -self.speed[0] > > # bounce off the top of the window > if self.rect.top <= 0 : > self.speed[1] = -self.speed[1] > if self.rect.top >= 575: > self.speed[1] = -self.speed[1] > > pygame.init() > pygame.mixer.init() > screen = pygame.display.set_mode([600,600]) > clock = pygame.time.Clock() > player = Player('Player.png', [10,10], [50, 50]) > monster = Monster('Monster.png', [7,5], [7,5]) > MGroup = pygame.sprite.Group(monster) > PGroup = pygame.sprite.Group(player) > > #VAR > points = 0 > health = 100 > KILLS = 0 > > #TEXT > font = pygame.font.Font(None, 50) > score_text = font.render(str(points), 1, (0,255,0)) > textpos = [10,10] > > font = pygame.font.Font(None, 50) > health_text = font.render(str(health), 1, (0, 255, 0)) > textpos1 = [50,10] > > #MUSIC > Shot_S = pygame.mixer.Sound('0001.wav') > Score = pygame.mixer.Sound('0002.wav') > Kill = pygame.mixer.Sound('0003.wav') > GameOver = pygame.mixer.Sound('0004.wav') > > pygame.mixer.music.load('CS.mp3') > pygame.mixer.music.play(-1) > pygame.time.delay(200) > > #MAIN > while 1: > clock.tick(30) > screen.fill([255, 255, 255]) > bgdtile = pygame.image.load('BAK.png') > > background = pygame.Surface([1000,900]) > for x in range(0, 10000, bgdtile.get_width()): > background.blit(bgdtile, (x, 0)) > screen.blit(background, (0,0)) > > > monster.move() > > for event in pygame.event.get(): > if event.type == pygame.QUIT: > sys.exit() > SystemExit > if event.type == pygame.KEYDOWN: > if event.key == pygame.K_UP: > player.rect.top = player.rect.top - 100 > if event.key == pygame.K_DOWN: > player.rect.top = player.rect.top + 100 > if event.key == pygame.K_RIGHT: > player.rect.left = player.rect.left + 100 > if event.key == pygame.K_LEFT: > player.rect.left = player.rect.left - 100 > > if pygame.sprite.spritecollide(monster, player, False): > Kill.play() > > screen.blit(player.image, player.rect) > screen.blit(monster.image, monster.rect) > screen.blit(health_text, textpos1) > screen.blit(score_text, textpos) > pygame.display.flip() > > > >