Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pygame中仅显示特定时间段的图像_Python_Pygame - Fatal编程技术网

Python 在pygame中仅显示特定时间段的图像

Python 在pygame中仅显示特定时间段的图像,python,pygame,Python,Pygame,所以我刚开始了解pygame,并认为用它来制作一个简单的太空入侵者游戏会很酷。所以在我的代码中,我希望“bullet.png”图像只在按下空格键的过程中显示在屏幕上。但它似乎不起作用。 我首先认为这可能是因为图像被绘制在另一个图像的下方。因此我改变了相关图像的位置,使它们不会重叠。但这似乎没有效果,表明这不是问题所在。 有人能指出我在代码中犯了什么错误吗?另外,请告诉我是否有更好的方法来做到这一点 谢谢` m = 2 bull = pygame.image.load(&

所以我刚开始了解pygame,并认为用它来制作一个简单的太空入侵者游戏会很酷。所以在我的代码中,我希望“bullet.png”图像只在按下空格键的过程中显示在屏幕上。但它似乎不起作用。 我首先认为这可能是因为图像被绘制在另一个图像的下方。因此我改变了相关图像的位置,使它们不会重叠。但这似乎没有效果,表明这不是问题所在。 有人能指出我在代码中犯了什么错误吗?另外,请告诉我是否有更好的方法来做到这一点

谢谢`

            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()是我提到的函数,但您可以使用其他您熟悉的方法。

谢谢您的建议。我会尝试一下