2016-03-15 36 views
1

当试图做块存储在一个元组我得到以下错误的图像存储在一个元组pygame.Surface:阻击器使用pygame的

Traceback (most recent call last): 
    File "/home/lyut/Projects/FruitMachine/test.py", line 40, in <module> 
    if __name__ == '__main__': main() 
    File "/home/lyut/Projects/FruitMachine/test.py", line 34, in main 
    draw_initial_gems() 
    File "/home/lyut/Projects/FruitMachine/test.py", line 11, in draw_initial_gems 
    pygame.Surface.blit(gems[0], (212, 100)) 
TypeError: argument 1 must be pygame.Surface, not tuple 

我环顾四周,类似的问题,并没有发现任何与此问题完全一致。

这里是我用来重现错误的源代码:

import pygame 

gems = [ 
    pygame.image.load("graphics/Gems/1.png"), 
    pygame.image.load("graphics/Gems/2.png"), 
    pygame.image.load("graphics/Gems/3.png"), 
] 


def draw_initial_gems(): 
    pygame.Surface.blit(gems[0], (212, 100)) 
    pygame.Surface.blit(gems[1], (340, 100)) 
    pygame.Surface.blit(gems[2], (468, 100)) 


def main(): 
    pygame.init() 
    clock = pygame.time.Clock() 

    print type(gems[1]) # returns: <type 'pygame.Surface'> 

    size = [800, 600] 
    screen = pygame.display.set_mode(size) 
    pygame.display.set_caption("test") 

    while 1: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       return 


     screen.fill((255, 255, 255)) 

     draw_initial_gems() 

     pygame.time.tick(30) 

    pygame.quit() 

if __name__ == '__main__': main() 

所以我的问题是:如何的blit存储在一个元组的图像?

回答

1

那不是你如何使用一种方法。你应该写:

gems[0].blit(screen, (x, y)) 

当你使用该方法作为函数Pygame似乎很困惑。 (通常情况下,您必须提供该方法所关注的实例作为第一个参数。)

为什么你需要屏幕?因为blit是一个块图像转移。它从一个图像到另一个图像。