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()
>
>
>
>

Reply via email to