pygame window 不会更新图片

pygame window won't update image

我正在开发一个掷骰子程序,当掷骰子时,它会显示它的随机面,然后是最后的面。但问题是当骰子滚动时它只显示第一张面孔而不会更新到其他面孔。有人知道为什么会这样吗?

代码如下:

from pygame.locals import *
from random import randint
import pygame
import sys

for x in range(11):
    if x > 1:
        n = randint(1,6)
        print(x,":",n)

pygame.init()

screen = pygame.display.set_mode((500,500),0,32)

one = pygame.image.load("one.png").convert_alpha()
two = pygame.image.load("two.png").convert_alpha()
three = pygame.image.load("three.png").convert_alpha()
four = pygame.image.load("four.png").convert_alpha()
five = pygame.image.load("five.png").convert_alpha()
six = pygame.image.load("six.png").convert_alpha()

while True:
    for evt in pygame.event.get():
        if evt.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    pygame.display.update()

    if n == 1:
        screen.blit(one,(250,250))
    if n == 2:
        screen.blit(two,(250,250))
    if n == 3:
        screen.blit(three,(250,250))
    if n == 4:
        screen.blit(four,(250,250))
    if n == 5:
        screen.blit(five,(250,250))
    if n == 6:
        screen.blit(six,(250,250))

您的代码的问题在于此代码是 运行 在 pygame 设置之前。

for x in range(11):
    if x > 1:
        n = randint(1,6)
        print(x,":",n)` 

你可以在 while 语句中解决这个问题,只验证你之前显示了多少个骰子。

之后,您必须重新绘制所有屏幕,首先重新绘制背景,然后再绘制要显示的图像。

此代码已经有效。

from pygame.locals import *
from random import randint
import pygame
import sys

pygame.init()

"Set screen"
screen = pygame.display.set_mode((1000,1000),0,32)

"Load images"
one = pygame.image.load("one.png").convert_alpha()
two = pygame.image.load("two.png").convert_alpha()
three = pygame.image.load("three.png").convert_alpha()
four = pygame.image.load("four.png").convert_alpha()
five = pygame.image.load("five.png").convert_alpha()
six = pygame.image.load("six.png").convert_alpha()

"Fill background"
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255, 255, 255))

"Setup Counter"
counterOfDices = 0

while True:
    for evt in pygame.event.get():
        if evt.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(background, (0, 0))

    "Verify How many dices had been displayed"
    if counterOfDices < 11:
        n = randint(1,6)
        counterOfDices += 1

    if n == 1:
        screen.blit(one,(250,250))
    if n == 2:
        screen.blit(two,(250,250))
    if n == 3:
        screen.blit(three,(250,250))
    if n == 4:
        screen.blit(four,(250,250))
    if n == 5:
        screen.blit(five,(250,250))
    if n == 6:
        screen.blit(six,(250,250))

    pygame.time.delay(100)
    pygame.display.update()