Python 在pygame中仅显示特定时间段的图像
所以我刚开始了解pygame,并认为用它来制作一个简单的太空入侵者游戏会很酷。所以在我的代码中,我希望“bullet.png”图像只在按下空格键的过程中显示在屏幕上。但它似乎不起作用。 我首先认为这可能是因为图像被绘制在另一个图像的下方。因此我改变了相关图像的位置,使它们不会重叠。但这似乎没有效果,表明这不是问题所在。 有人能指出我在代码中犯了什么错误吗?另外,请告诉我是否有更好的方法来做到这一点 谢谢`Python 在pygame中仅显示特定时间段的图像,python,pygame,Python,Pygame,所以我刚开始了解pygame,并认为用它来制作一个简单的太空入侵者游戏会很酷。所以在我的代码中,我希望“bullet.png”图像只在按下空格键的过程中显示在屏幕上。但它似乎不起作用。 我首先认为这可能是因为图像被绘制在另一个图像的下方。因此我改变了相关图像的位置,使它们不会重叠。但这似乎没有效果,表明这不是问题所在。 有人能指出我在代码中犯了什么错误吗?另外,请告诉我是否有更好的方法来做到这一点 谢谢` m = 2 bull = pygame.image.load(&
m = 2
bull = pygame.image.load("bullet.png")
t=True
while t:
screen.fill((50, 50, 50))
for event in pygame.event.get():
if event.type == pygame.QUIT:
t = False
#keydown statement
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
n = 1
if event.key == pygame.K_LEFT:
p = -1
if event.key == pygame.K_SPACE:
m = 0
#keyup statement
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or pygame.K_LEFT:
n = 0
p = 0
if event.key == pygame.K_SPACE:
m = 1
if m == 0:
screen.blit(bull, (ab, 100))
background()
player1(ab, bc)
ab += n+p
if ab <= 0:
ab = 0
if ab >= 468:
ab = 468
pygame.display.update()
m=2
bull=pygame.image.load(“bullet.png”)
t=真
而t:
屏幕填充((50,50,50))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
t=假
#keydown语句
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_RIGHT:
n=1
如果event.key==pygame.K_左:
p=-1
如果event.key==pygame.K_空间:
m=0
#键控语句
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_RIGHT或pygame.K_LEFT:
n=0
p=0
如果event.key==pygame.K_空间:
m=1
如果m==0:
筛网布利特(牛,(ab,100))
背景()
玩家1(ab,bc)
ab+=n+p
如果ab=468:
ab=468
pygame.display.update()
{这是我的第一篇帖子,我也是python的新手(甚至是编程方面的新手)。因此,如果我的问题格式不正确,请原谅。}子弹没有出现在屏幕上的原因是因为keyup语句。因为正如代码中所说,当空格键未按下时,值“m”再次回到1(m=1),if语句将不会执行。如果我所说的是问题所在,我建议您定义一个射击函数,在屏幕上闪烁子弹并移动它。最好使用以下代码,而不是使用keyup或keydown语句:
keys = pygame.key.get_pressed()
if keys[pygame.K_Space]:
player.shoot()
这可能有助于解决这个问题。shoot()是我提到的函数,但您可以使用其他您熟悉的方法。谢谢您的建议。我会尝试一下