Pygame 和 pygame.time.wait() 函数以一种奇怪的方式工作
Pygame and pygame.time.wait() function is working in a bizarre way
我正在尝试更改 pygame 屏幕。首先,我画一个矩形。然后,我再次填满屏幕。在此期间,我添加了等待功能以查看更改。当我 运行 程序时,屏幕开始变黑并等待每个等待函数而不做任何更改。然后,它显示了最终结果。
import pygame
BlockList=[]
pygame.init()
block_side_length=30
black = 0,0,0
GameArea_start_x=5
GameArea_start_y=5
GameArea_width=300
GameArea_height=270
gameDisplay = pygame.display.set_mode((400,300))
pygame.display.set_caption("Tetris")
gameDisplay.fill((0,100,100))
GameArea = pygame.draw.rect(gameDisplay,black,[GameArea_start_x,GameArea_start_y,GameArea_width,GameArea_height])
lowest_block_y =GameArea_start_y+GameArea_height-block_side_length
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.draw.rect(gameDisplay,(0,250,0),[50,50,40,90])
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
GameArea
输出:
4 秒后
注意:我试图通过调用它的名称来绘制矩形。它不起作用。有没有类似的时尚?
为了更新 pygame window 中显示的内容,您必须调用 pygame.display.update(),如下所示:
import pygame
BlockList=[]
pygame.init()
block_side_length=30
black = 0,0,0
GameArea_start_x=5
GameArea_start_y=5
GameArea_width=300
GameArea_height=270
gameDisplay = pygame.display.set_mode((400,300))
pygame.display.set_caption("Tetris")
gameDisplay.fill((0,100,100))
GameArea = pygame.draw.rect(gameDisplay,black,[GameArea_start_x,GameArea_start_y,GameArea_width,GameArea_height])
lowest_block_y =GameArea_start_y+GameArea_height-block_side_length
pygame.display.update()
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.draw.rect(gameDisplay,(0,250,0),[50,50,40,90])
pygame.display.update()
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.display.update()
请注意,您长时间调用 pygame.time.wait()
的方法会导致 window 在等待时冻结并变得无响应。 .
中描述了一些更好的方法
我正在尝试更改 pygame 屏幕。首先,我画一个矩形。然后,我再次填满屏幕。在此期间,我添加了等待功能以查看更改。当我 运行 程序时,屏幕开始变黑并等待每个等待函数而不做任何更改。然后,它显示了最终结果。
import pygame
BlockList=[]
pygame.init()
block_side_length=30
black = 0,0,0
GameArea_start_x=5
GameArea_start_y=5
GameArea_width=300
GameArea_height=270
gameDisplay = pygame.display.set_mode((400,300))
pygame.display.set_caption("Tetris")
gameDisplay.fill((0,100,100))
GameArea = pygame.draw.rect(gameDisplay,black,[GameArea_start_x,GameArea_start_y,GameArea_width,GameArea_height])
lowest_block_y =GameArea_start_y+GameArea_height-block_side_length
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.draw.rect(gameDisplay,(0,250,0),[50,50,40,90])
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
GameArea
输出:
4 秒后
注意:我试图通过调用它的名称来绘制矩形。它不起作用。有没有类似的时尚?
为了更新 pygame window 中显示的内容,您必须调用 pygame.display.update(),如下所示:
import pygame
BlockList=[]
pygame.init()
block_side_length=30
black = 0,0,0
GameArea_start_x=5
GameArea_start_y=5
GameArea_width=300
GameArea_height=270
gameDisplay = pygame.display.set_mode((400,300))
pygame.display.set_caption("Tetris")
gameDisplay.fill((0,100,100))
GameArea = pygame.draw.rect(gameDisplay,black,[GameArea_start_x,GameArea_start_y,GameArea_width,GameArea_height])
lowest_block_y =GameArea_start_y+GameArea_height-block_side_length
pygame.display.update()
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.draw.rect(gameDisplay,(0,250,0),[50,50,40,90])
pygame.display.update()
pygame.time.wait(2000)
gameDisplay.fill((0,100,100))
pygame.display.update()
请注意,您长时间调用 pygame.time.wait()
的方法会导致 window 在等待时冻结并变得无响应。