Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/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,我回来了。。。花了很多时间在游戏上之后,我遇到了两个问题。它们都涉及显示精灵和文本。第一个是,闪烁的文本。我敢打赌,你们中的许多人都经历过这种情况,但通过谷歌搜索,我无法找到导致这种情况的直接原因。如果有人能向我解释为什么我的文字在屏幕上闪烁,我将不胜感激 我的下一个问题几乎和我的第一个问题一样,只是它涉及一个精灵。我在游戏中添加了一些代码,告诉python在按下空格键时从我的玩家sprite中射出一颗子弹。当我运行它时,我没有收到任何错误,我的项目符号显示在屏幕上,然后立即消失。我猜这两个bu

我回来了。。。花了很多时间在游戏上之后,我遇到了两个问题。它们都涉及显示精灵和文本。第一个是,闪烁的文本。我敢打赌,你们中的许多人都经历过这种情况,但通过谷歌搜索,我无法找到导致这种情况的直接原因。如果有人能向我解释为什么我的文字在屏幕上闪烁,我将不胜感激

我的下一个问题几乎和我的第一个问题一样,只是它涉及一个精灵。我在游戏中添加了一些代码,告诉python在按下空格键时从我的玩家sprite中射出一颗子弹。当我运行它时,我没有收到任何错误,我的项目符号显示在屏幕上,然后立即消失。我猜这两个bug是直接相关的,但我不确定是什么导致了它

任何比我更了解pygame的人,请你向我解释是什么导致了这个问题,这样我就可以确定解决问题的方法

这是我的沙坑(玩家)和子弹等级:

class Bunker(pygame.sprite.Sprite):
def __init__(self):
     pygame.sprite.Sprite.__init__(self)
     bunker = pygame.image.load(bunk).convert_alpha()
     self.image = bunker
     self.rect = self.image.get_rect()
     bunker_x = 160
     bunker_y = 0
     self.firecountdown = 0
def update(self, milli):
     self.pos = self.rect
     if (self.firecountdown > 0):
          self.firecountdown -= milli      
def collide(self, EnemyTank):
     return pygame.sprite.collide_rect(self.rect, EnemyTank.rect)
def fire(self, bullet):
     if (self.firecountdown <=0):
          bullet.x = 165
          bullet.y = 0
          bullet.fired = True
          bullet.speed = 100
          self.firecountdown = 500

class Bullet(pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.__init__(self)
          bullet = pygame.image.load(bull).convert_alpha()
          self.image = bullet
          self.rect = self.image.get_rect()
          self.x = 0
          self.y = 0
          self.speed = 0
          self.forwardx = 1
          self.forwardy = 0
          self.fired = False
     def update(self):
          self.pos = self.rect
          self.x += self.forwardx * self.speed
          self.y += self.forwardy * self.speed
          if self.x > 640:
               self.fired = False

要避免闪烁,请确保每帧只调用一次pygame.display.update或pygram.display.flip。该调用通常在主循环的末尾,刚好在时钟节拍(fps)调用之前进行

例如:

# main loop
while true:
    for event in pygame.event.get():
        # process events and update game state

    # Draw current game state

    # Update display
    pygame.display.flip()

    # Keep running at FPS frames/second
    clock.tick(FPS)

要避免闪烁,请确保每帧只调用一次pygame.display.update或pygram.display.flip。该调用通常在主循环的末尾,刚好在时钟节拍(fps)调用之前进行

例如:

# main loop
while true:
    for event in pygame.event.get():
        # process events and update game state

    # Draw current game state

    # Update display
    pygame.display.flip()

    # Keep running at FPS frames/second
    clock.tick(FPS)

我明白子弹的问题所在,当你发射它时,你就点燃了它。然后,在制造子弹后将其设置为false。问题是,看起来只有当火是真的时你才会抽子弹。这意味着您绘制了一帧的项目符号,然后将fire设置为false并停止绘制它

我看到了项目符号的问题,当您启动它时,您将fire设置为true。然后,在制造子弹后将其设置为false。问题是,看起来只有当火是真的时你才会抽子弹。这意味着你画了一帧的子弹,然后设置为false并停止画它

我认为你的子弹没有消失,而是很快就从屏幕上消失了。试着把速度放慢一点。我认为你的子弹并没有消失,而是很快就从屏幕上消失了。试着把速度放慢一点。