Pygame ValueError:无效的rectstyle对象

时间:2018-07-12 08:44:25

标签: python pygame

我从here下载了一个名为Rabbitone的pygame示例,并遵循了相应的youtube video

所以我研究了代码并进行了尝试:

import pygame

pygame.init()


width, height = 640, 480
screen = pygame.display.set_mode((width, height))

player = pygame.image.load("resources/images/dude.png")


while True:
    screen.fill(0,0,0)
    pygame.display.flip()
    screen.blit(player, (100,100))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit(0)

在我跟随的视频教程中,代码有效。为什么会出现此错误?

  

回溯(最近通话最近一次):

     

文件“”,第

行第2行      

ValueError:无效的rectstyle对象

2 个答案:

答案 0 :(得分:3)

您要将三个独立的整数传递给pygame.Surface.fill方法,但是必须传递一个颜色元组(或列表或pygame.Color对象)作为第一个参数:screen.fill((0, 0, 0))。 / p>

您还需要在fillflip通话之间关闭播放器,否则您只会看到黑屏。


与问题无关,但通常应convert改善表面性能并添加pygame.time.Clock来限制帧频。

import pygame


pygame.init()

width, height = 640, 480
screen = pygame.display.set_mode((width, height))
# Add a clock to limit the frame rate.
clock = pygame.time.Clock()

# Convert the image to improve the performance (convert or convert_alpha).
player = pygame.image.load("resources/images/dude.png").convert_alpha()

running = True
while running:
    # Handle events.
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Insert the game logic here.

    # Then draw everything, flip the display and call clock tick.
    screen.fill((0, 0, 0))
    screen.blit(player, (100, 100))
    pygame.display.flip()
    clock.tick(60)  # Limit the frame rate to 60 FPS.

pygame.quit()

答案 1 :(得分:0)

我有同样的问题,但情况不同。 我放了surface.fill(0,0,0) 为了解决这个问题,我放了surface.fill((0,0,0)) 带有一对额外的括号,使颜色更加生动