如何在pygame中发射子弹(不是OOP)

时间:2016-03-15 02:48:26

标签: python pygame

这是我现在的代码。

x_change = 0
y_change = 0

enemy_start_x = -200
enemy_start_y = random.randrange(0,470)
enemy_speed = 3

while True:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        quitgame()

    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            x_change = -5
        if event.key == pygame.K_RIGHT:
            x_change = 5
        if event.key == pygame.K_UP:
            print(">Bullet Fire!<")
        if event.key == pygame.K_ESCAPE:
            quitgame()

    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            x_change = 0

x += x_change
gameDisplay.fill(white)

gameDisplay.blit(enemyImg,(enemy_start_x,enemy_start_y))
enemy_start_x += enemy_speed

gameDisplay.blit(playerImg,(x,y))

pygame.display.update()
clock.tick(60)

我让玩家左右移动,敌人从左到右移动到他上方,并在每个圈子中加速。 我需要做的是按下按键我想射击子弹。

1 个答案:

答案 0 :(得分:0)

如果您不打算使用OOP,您可以使用元组来表达像((pos_x , pos_y) , (speed_x,speed_y))这样的子弹或类似的结构。

将所有项目符号保留在列表bullets_list

当您按UP时,您可以以特定的速度创建一个与玩家位置相同的子弹。

在每个帧刷新中,你需要遍历bullets_list以根据(pos_x , pos_y)修改(speed_x , speed_y),并检查子弹和敌人之间的距离是否足够接近。 / p>

如果您将项目符号作为对象重新调用并将其称为move方法,OOP将更好地完成此工作。