2017-04-18 94 views
0

我一直在做一些测试与pygame的,但我坚持表面。我无法画出表面或其他东西。 这里是我的代码:pygame的表面不显示

import pygame 

pygame.init() 
screen = pygame.display.set_mode((400, 300)) 
#surface = pygame.Surface((100, 100)) 
done = False 
screen.fill((255, 255, 255)) 


while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done = True 


    #surface = pygame.Surface((50, 50)) 
    surface = pygame.Surface((100, 100)) 
    #surface.fill((255, 0, 0)) 
    #surface.set_colorkey((255, 0, 0)) 
    pygame.draw.circle(surface, (0,0,0), (25,25),25) 
    #pygame.draw.rect(screen, (0, 128, 255), pygame.Rect(30, 30, 60, 60)) 

    pygame.display.flip() 

所以,当我想画的东西到屏幕上它吸引它:

这工作:

pygame.draw.circle(screen, (0,0,0), (25,25),25) 

但是,这并不:

pygame.draw.circle(surface, (0,0,0), (25,25),25) 

我已经阅读了一些文档,但它似乎足以调用表面并将背景白色,因为默认情况下会将其绘制为黑色。我真的不知道我做错了什么。

我希望是足够的信息。

干杯。

+1

您需要将表面“blit”到屏幕上。 –

+0

[这是对曲面的简短介绍。](http://stackoverflow.com/documentation/pygame/7079/drawing-on-the-screen/23787/surfaces#t=201704182035216002602) –

+0

谢谢你们,非常感谢 –

回答

0

Pygame的具有不同类型的表面。除了普通表面,还有显示器。显示器是一种表面,但表面不是一种显示器。这些不同之处在于显示屏显示在屏幕上,而普通曲面则不是。

Pygame的表面与pygame.Surface创建的,而显示与pygame.display.set_mode创建。在Pygame中,你一次只能有一个显示,但你可以拥有任意数量的表面。

假设screen是您的显示,并surface是你的另一面,这里是你如何将屏幕上显示的表面:

screen.blit(surface, [x,y]) 

xy都在那里它们被显示在显示器上的坐标。

在你的程序中,你永远不会在表面的blit到显示器上,所以它永远不会显示。只需做到这一点,该程序将工作除非还有您的代码的另一个问题。

如果这没有解决您的问题,请及时通知我的意见,我会看看我能做些什么来帮助。

参考https://www.pygame.org/docs/ref/display.htmlhttps://www.pygame.org/docs/ref/surface.html

+0

这实际上修复了这个问题,我错过了那一行。非常感谢你。 –