这是我现在的代码。
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)
我让玩家左右移动,敌人从左到右移动到他上方,并在每个圈子中加速。 我需要做的是按下按键我想射击子弹。
答案 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将更好地完成此工作。