我现在正试着发射子弹,让它们成功地与加电装置相撞。现在,我希望这样做,因为我的bullet类有一个checkCollision函数。我也打过电话项目符号更新在游戏屏幕的更新类中,所以我不确定发生了什么。在
这是我的子弹课程:
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)
这是我的通电课程
^{pr2}$这里是我管理一切的地方:
class GameScreen(SceneBase):
randomNumber = random.randint(0, 2)
def __init__(self):
SceneBase.__init__(self)
self.bg = pygame.image.load("images/asianbackground.jpg")
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, 40, 100, SceneBase.player1_character, self.bullets_group)
self.ai_paddle = classes.AIPaddle(screen_size, 40, 100, SceneBase.characterlist[GameScreen.randomNumber])
self.pong = classes.Pong(screen_size, 20, 20, "images/pokeball.png")
self.now1 = 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)
# 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
current_time = pygame.time.get_ticks()
if time_difference1 >= 2000:
powerup = classes.PowerUp(screen_size, 40, 40, "images/ramen.png")
powerup.kill_time = current_time + 5000
self.powerup_group.add(powerup)
self.now1 = pygame.time.get_ticks()
current_time = pygame.time.get_ticks()
for powerup in self.powerup_group:
for bullet in self.bullets_group:
bullet.update(powerup)
if powerup.kill_time <= current_time:
self.powerup_group.remove(powerup)
def Render(self, screen):
screen.blit(self.bg, (0, 0))
self.bullets_group.draw(screen)
self.powerup_group.draw(screen)
self.player_paddle.draw(screen)
self.ai_paddle.draw(screen)
self.pong.draw(screen)
#Make the text for the user
player_text = "Player 1" + ":" + str(self.player_paddle.score)
player_text_image = self.my_font.render(player_text, True, GREEN)
screen.blit(player_text_image, (screen_size[0] //4, screen_size[1] * 0.8))
#Make the text for the AI
ai_text = "Player 2" + ":" + str(self.ai_paddle.score)
ai_text_image = self.my_font.render(ai_text, True, GREY)
screen.blit(ai_text_image, (3* screen_size[0] // 4, screen_size[1] * 0.8))
def SwitchToScene(self, next_scene):
self.next = next_scene
Sprite
有他所属组的列表。您必须在bullet中将bullet_group
添加到此列表,然后kill()
将从组bullet_group
中删除bullet这里的子弹应该只存活3秒(3000毫秒)。
^{pr2}$参见
__init__
和removeBullet
中的self.lifetime
相关问题 更多 >
编程相关推荐