python - Pygame - Code Error (multiplayer) -
i have been writing python game pygame. basically, game in have collect 'powerups' possible, , if have more other player, can 'eat' him. however, while works first player, whenever second player gets more first, first 1 disappears. here code:
import pygame,sys,random pygame.locals import * class player(pygame.sprite.sprite): playerscore = 0 def __init__(self,loc,x,y): pygame.sprite.sprite.__init__(self) self.image = pygame.image.load(loc) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.movex = 0 self.movey = 0 self.walls = none allsprites_list.add(self) def update(self): self.rect.x += self.movex block_hit_list = pygame.sprite.spritecollide(self, self.walls, false) block in block_hit_list: if self.rect.x > 0: self.rect.right = block.rect.left else: self.rect.left = block.rect.right self.rect.y += self.movey block_hit_list = pygame.sprite.spritecollide(self, self.walls, false) block in block_hit_list: if self.rect.y > 0: self.rect.bottom = block.rect.top else: self.rect.top = block.rect.bottom eatingupdate() player in player_hit_list: if self.playerscore > player.playerscore: allsprites_list.remove(player) elif self.playerscore < player.playerscore: allsprites_list.remove(self) def movement(self,event,playertype): self.playertype = playertype if self.playertype == 1: if event.type == pygame.keydown: if event.key == pygame.k_left: self.movex = -10 elif event.key == pygame.k_right: self.movex = 10 elif event.key == pygame.k_up: self.movey = -10 elif event.key == pygame.k_down: self.movey = 10 if self.playertype == 2: if event.type == pygame.keydown: if event.key == pygame.k_a: self.movex = -10 elif event.key == pygame.k_d: self.movex = 10 elif event.key == pygame.k_w: self.movey = -10 elif event.key == pygame.k_s: self.movey = 10 def winning(self): self.image = pygame.image.load('data/dotl.png') player_list.remove(self) def losing(self): self.image = pygame.image.load('data/circle.png') player_list.add(self) class powerup(pygame.sprite.sprite): def __init__(self): pygame.sprite.sprite.__init__(self) self.image = pygame.image.load('data/powerup.png') self.rect = self.image.get_rect() def eatingupdate(): if player1.playerscore > player2.playerscore: player2.losing() player1.winning() elif player2.playerscore > player1.playerscore: player1.losing() player2.winning() class wall(pygame.sprite.sprite): def __init__(self, x, y, width, height): pygame.sprite.sprite.__init__(self) self.image = pygame.surface([width, height]) self.image.fill((255,255,255)) self.rect = self.image.get_rect() self.rect.y = y self.rect.x = x pygame.init() powerup_list = pygame.sprite.group() allsprites_list = pygame.sprite.group() player_list = pygame.sprite.group() wall_list = pygame.sprite.group() pygame.mixer.init() pygame.mixer.music.load('data/song.wav') pygame.mixer.music.set_volume(0.7) pygame.mixer.music.play(-1) player1 = player('data/circle.png',1390,430) player1.walls = wall_list player2 = player('data/circle.png',20,430) player2.walls = wall_list clock = pygame.time.clock() background_img = pygame.image.load('data/background.jpg') size = background_img.get_size() pygame.display.set_caption('the troll game') display = pygame.display.set_mode(size) clock = pygame.time.clock() wall = wall(0, 0, 10, 900) wall_list.add(wall) allsprites_list.add(wall) wall = wall(10, 0, 1440, 10) wall_list.add(wall) allsprites_list.add(wall) wall = wall(1430,0,10,900) wall_list.add(wall) allsprites_list.add(wall) wall = wall(0,845,1440,10) wall_list.add(wall) allsprites_list.add(wall) while 1: event in pygame.event.get(): if event.type == pygame.quit: pygame.quit() sys.exit() player1.movement(event,1) player2.movement(event,2) powerupadd = 5 if len(powerup_list) > 10: powerupadd = 0 else: powerupadd += 1 in range(powerup): powerup = powerup() powerup.rect.x = random.randrange(background_img.get_width()) powerup.rect.y = random.randrange(background_img.get_height()) powerup_list.add(powerup) allsprites_list.add(powerup) powerupadd -= 1 poweruphit_list1 = pygame.sprite.spritecollide(player1,powerup_list,true) powerup_list2 = pygame.sprite.spritecollide(player2,powerup_list,true) player_hit_list = pygame.sprite.spritecollide(player1 or player2,player_list, false) powerup in poweruphit_list1: player1.playerscore += 1 powerup in poweruphit_list2: player2.playerscore += 1 player1.update() player2.update() display.blit(background_img,(0,0)) allsprites_list.draw(display) pygame.display.update() clock.tick(60) are there careless mistakes? appreciated.
Comments
Post a Comment