现在我正在尝试做两件事,包括从组中移除精灵。我想完成两件事:
目标1的问题:一旦我的子弹与电源相撞,我所有的子弹都会冻结。
目标2的问题:我的所有通电都被移除,而不是一次一个通电
这是我的子弹课:
class Bullet(Image):
def __init__(self, screen_size, width, height, filename, color = (255, 0, 0)):
super().__init__(screen_size, width, height, filename, color = (255, 0, 0))
def checkCollision(self, powerup):
return pygame.sprite.collide_mask(self, powerup)
def removeBullet(self, powerup):
if self.checkCollision(powerup):
self.kill()
def update(self, powerup):
self.rect.centerx += 3
self.removeBullet(powerup)
这是我的通电课程
class PowerUp(Image):
def __init__(self, screen_size, width, height, filename, color = (255, 0, 0)):
super().__init__(screen_size, width, height, filename, color = (255, 0 , 0))
_centerx = random.randint(20, 1100) # <-- local variable _centerx (don't need it in other methods)
_centery = random.randint(20, 700) # <-- local variable _centery (don't need it in other methods)
self.radius = 10
self.rect = pygame.Rect(_centerx-self.radius,
_centery-self.radius,
self.radius*2, self.radius*2)
def update(self):
pass
这里是我管理一切的地方:
class GameScreen(SceneBase):
def __init__(self):
SceneBase.__init__(self)
self.my_font = pygame.font.SysFont("Arial", 50)
self.bullets_group = pygame.sprite.Group()
self.powerup_group = pygame.sprite.Group()
self.player_paddle = classes.PlayerPaddle(screen_size, 20, 100, "naruto.png", self.bullets_group)
self.ai_paddle = classes.AIPaddle(screen_size, 20, 100, "naruto.png")
self.pong = classes.Pong(screen_size, 20, 20, "pokeball.png")
self.now1 = pygame.time.get_ticks()
self.now2 = pygame.time.get_ticks()
def ProcessInput(self, events, pressed_keys):
for event in events:
self.player_paddle.handle_event(event)
def Update(self):
self.player_paddle.update()
self.ai_paddle.update(self.pong, self.player_paddle)
self.pong.update(self.player_paddle, self.ai_paddle)
for powerup in self.powerup_group:
self.bullets_group.update(powerup)
self.powerup_group.update()
# if someone reaches a score of 2, then exit the game
if self.player_paddle.score == 2 or self.ai_paddle.score == 2:
SceneBase.is_game_over = True
self.SwitchToScene(GameOverScreen())
time_difference1 = pygame.time.get_ticks() - self.now1
time_difference2 = pygame.time.get_ticks() - self.now2
if time_difference1 >= 2000:
self.powerup_group.add(classes.PowerUp(screen_size, 40, 40, "ramen.png"))
self.now1 = pygame.time.get_ticks()
for powerup in self.powerup_group:
if time_difference2 >= 5000:
self.powerup_group.remove(powerup)
如果我的PlayerPaddle类,如果我点击一个键,子弹就会从中发射出来。但是,项目符号并没有向右移动(就像我在项目符号的更新函数中要求它做的那样)
def handle_event(self, event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
self.direction = -1
elif event.key == pygame.K_DOWN:
self.direction = 1
elif event.key == pygame.K_LEFT:
self.turnLeft()
elif event.key == pygame.K_RIGHT:
self.turnRight()
elif event.key == pygame.K_u:
bullet = Bullet(screen_size, 25, 25, "naruto.png", color = (255, 0 , 0))
bullet.rect.centerx = self.rect.centerx
bullet.rect.centery = self.rect.centery
self.bullet_group.add(bullet)
目标2:你使用相同的定时器为所有的电源
所以它可以同时移除所有的电源
每次开机都需要自己的定时器。我使用名称
kill_time
和current_time+5000
相关问题 更多 >
编程相关推荐