我最近用pygame编写了一个python游戏。基本上,这是一个游戏,你必须收集尽可能多的'力量',如果你比其他球员,你可以'吃'他。然而,当它对第一个玩家有效时,每当第二个玩家得到的比第一个玩家更多时,第一个玩家就消失了。这是我的密码:
import pygame,sys,random
from 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)
for 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)
for block in block_hit_list:
if self.rect.y > 0:
self.rect.bottom = block.rect.top
else:
self.rect.top = block.rect.bottom
eatingupdate()
for 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:
for 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
for i 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)
for powerup in poweruphit_list1:
player1.playerscore += 1
for 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)
有什么粗心的错误吗?感谢您的帮助。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐