Pygame sceen.fill()没有正确填充颜色

时间:2015-08-04 14:45:49

标签: python pygame

我刚刚开始学习Pygame。我正在关注this教程。 我运行了以下程序,但它显示的是黑色而不是蓝色:

import pygame

h = input("Enter the height of the window : ")
w = input("Enter the width of the window : ")
screen = pygame.display.set_mode((w,h))

running = True
while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running=0

screen.fill((0,0,1))
pygame.display.flip()

2 个答案:

答案 0 :(得分:6)

对于蓝色,您应该使用255作为元组中的第三个元素,而不是1

示例 -

while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running=0
    screen.fill((0,0,255))
    pygame.display.flip()

答案 1 :(得分:0)

它显示为黑色,因为在游戏循环后您正在运行screen.fill()。这意味着它将仅在您完成播放后填满屏幕。 最佳实践是将其放置在循环中的某个位置,然后再绘制任何要绘制的精灵-这样,如果精灵移动,其旧位置将被背景着色。

此外,如其他答案所述:(0,0,1)是黑色,带有最淡的蓝色提示。谷歌搜索“ RGB拾色器”可以找到一个不错的RGB拾色器。

最后,您应该将“ event = pygame.event.poll()”更改为“用于pygame.event.get()中的事件”,如图所示,因为这将允许它同时检测多个事件。显然,该示例不是必需的,但我认为不会将其保留为只能关闭的蓝屏。

import pygame

pygame.init()

h = input("Enter the height of the window : ")
w = input("Enter the width of the window : ")
screen = pygame.display.set_mode((w,h))

running = True
while running:
    for event in pygame.event.poll():
        if event.type == pygame.QUIT:
            running=0
        #any additional event checks
    screen.fill((0,0,255))
    #any additional drawings
    pygame.display.flip()

pygame.quit()