0
感謝這個網站上的人們的幫助,我設法在我的平臺遊戲上獲得一些子彈射擊。火一直持續着,直到撞到地面然後消失。但是,我想在該級別添加水平發射子彈,並且我已經完成了與垂直子彈完全相同的代碼,但它只發射一發子彈而不發射任何其他水平子彈。它發射一顆水平子彈,到達我的屏幕邊界,之後沒有其他子彈出現。任何幫助將被誇大!並非我所有的子彈都射擊了
class VerticalBullets(pygame.sprite.Sprite):
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("Images/bullet.png")
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.y += 7
if self.rect.y > 520:
bullet_list_v.empty()
class HorizontalBullets(pygame.sprite.Sprite):
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
bullet_image = pygame.image.load("Images/bullet.png")
self.image = pygame.transform.rotate(bullet_image,-90)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.x -= 5
if self.rect.x < 30:
bullet_list_h.empty()
def main3():
TrapList.empty()
TrapList.add(trap4)
player.hspeed = 0
player.rect.x,player.rect.y = 50,0
bullet_list_v.empty()
bullet_list_h.empty()
FiringBullet = pygame.USEREVENT + 1
pygame.time.set_timer(FiringBullet, 1500)
GameExit = False
while GameExit==False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.move(-player.speed,0)
if event.key == pygame.K_RIGHT:
player.move(player.speed,0)
if event.key == pygame.K_UP:
player.move(0,-player.Jump)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
player.move(player.speed,0)
if event.key == pygame.K_RIGHT:
player.move(-player.speed,0)
if event.key == pygame.K_UP:
player.move(0,0)
if event.type == FiringBullet:
bullet = VerticalBullets(400,200)
bullet2 = VerticalBullets(500,200)
bullet3 = VerticalBullets(625,200)
hbullet = HorizontalBullets(700,400)
bullet_list_v.add(bullet)
bullet_list_v.add(bullet2)
bullet_list_v.add(bullet3)
bullet_list_h.add(h_bullet)
screen.fill(BLACK)
level3.update()
for eachbullet in bullet_list_v:
bullet_list_v.draw(screen)
bullet_list_v.update()
for eachbullet in bullet_list_h:
bullet_list_h.draw(screen)
bullet_list_h.update()
if player.rect.y < 0:
NextLevel3()
TrapList.draw(screen)
trampoline.render()
playergroup.update()
playergroup.draw(screen)
player.level_3_collisions(BlockListDirt2)
pygame.display.update()
clock.tick(60)
建議:添加'python'標籤 - 並且您的代碼將被着色並且更具可讀性。 – furas
看起來你的一堆代碼在做一些愚蠢的事情。爲什麼當他們中的一個出界時,你會清空精靈列表?當然,你只想移除界外精靈,而不是所有其他的?假設這些'list'實際上是PyGame'group'對象,當Sprite檢測到它超出邊界時,您可能想調用'self.kill()'。這會將它從組中刪除,而不會刪除該組中的所有其他精靈。 – Blckknght
謝謝我查看了self.kill()函數,這使得我用noob方式更有意義!謝謝! – Jim