我从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对象
答案 0 :(得分:3)
您要将三个独立的整数传递给pygame.Surface.fill
方法,但是必须传递一个颜色元组(或列表或pygame.Color
对象)作为第一个参数:screen.fill((0, 0, 0))
。 / p>
您还需要在fill
和flip
通话之间关闭播放器,否则您只会看到黑屏。
与问题无关,但通常应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))
带有一对额外的括号,使颜色更加生动