Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 Sprite未在pygame中渲染_Python_Pygame - Fatal编程技术网

Python Sprite未在pygame中渲染

Python Sprite未在pygame中渲染,python,pygame,Python,Pygame,我读过一些关于精灵的例子,但我遗漏了一些小的关键点。此代码不会引发错误,但预期的精灵将不会渲染。相反,我只看到了空白的白色背景。我应该看到的是一个绿色的正方形,中间有一个“7”。这个街区应该向右移动 导入系统 导入pygame pygame.init() 红色=(255,0,0) 绿色=(0,255,0) 蓝色=(0,0255) 白色=(255,255,255) main_surface=pygame.display.set_模式((500500),0,32) clock=pygame.time

我读过一些关于精灵的例子,但我遗漏了一些小的关键点。此代码不会引发错误,但预期的精灵将不会渲染。相反,我只看到了空白的白色背景。我应该看到的是一个绿色的正方形,中间有一个“7”。这个街区应该向右移动

导入系统 导入pygame pygame.init() 红色=(255,0,0) 绿色=(0,255,0) 蓝色=(0,0255) 白色=(255,255,255) main_surface=pygame.display.set_模式((500500),0,32) clock=pygame.time.clock() fps=30 SYS_FONT=pygame.FONT.SysFont(无,95) 类块(pygame.sprite.sprite): 定义初始化(自身、颜色、文本): pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我) self.image=pygame.Surface((80,80)) self.rect=self.image.get_rect() self.image.fill(颜色) self.text\u surf=SYS\u FONT.render(text,False,白色) self.text\u rect=self.text\u surf.get\u rect(中心=self.rect.center) self.image.blit(self.text\u surf,self.text\u rect) def更新(自我): 自校正x+=5 sprites=pygame.sprite.Group() 块7=块(绿色,“7”) 精灵。添加(块7) 精灵绘制(主曲面) 尽管如此: 主表面填充(白色) 对于pygame.event.get()中的事件: 如果event.type==pygame.QUIT: pygame.quit() sys.exit() pygame.display.update() sprites.update() 时钟滴答声(fps)
您还需要在循环中调用
精灵。绘制(主曲面)

为True时:
主表面填充(白色)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
sprites.update()

sprites.draw(主曲面)#有两个问题。正如在另一个答案中提到的,您必须调用
sprites.draw(主曲面)
。见以下文件:

将包含的精灵绘制到曲面参数。这将使用源曲面的
Sprite.image
属性和位置的
Sprite.rect

但顺序很重要。在主应用程序循环中连续渲染场景时,必须按列出的顺序执行以下步骤:

  • 清除display(或绘制背景)
  • 画场景
  • 通过或更新显示
如果在清除显示后直接更新显示,则除已清除的显示外,您将看不到任何内容

因此,主回路必须是:

为True时:
#处理事件
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
sys.exit()
#更新精灵位置
sprites.update()
#清晰显示
主表面填充(白色)
#绘制场景(绘制精灵)
精灵绘制(主曲面)
#更新残障
pygame.display.update()
#极限FPS
时钟滴答声(fps)