这个方法如何以这种方式工作,只需解释一下

时间:2017-12-08 20:20:32

标签: python pygame

import pygame

pygame.init()
Display = pygame.display.set_mode((800,600))
pygame.display.set_caption("Blocky")

red = (157, 139, 215)
black = (0,0,0)

Display.fill(red)
pygame.draw.rect(Display,black,(400,300,200,80))

pygame.display.update()

excape = False

while not excape:
    for dork in pygame.event.get():
        print (dork)

[Result

正常工作但是当我在更新功能下将红色复制并粘贴到pygame.draw时,它不起作用..为什么没有?

2 个答案:

答案 0 :(得分:2)

因为(157, 139, 215)不是红色。它的背景颜色与紫色相同。

将其替换为red = (255, 0, 0)

并将背景显示设置为不同的填充颜色。

这样的事情:

purple = (157, 139, 215)
red = (255, 0, 0)
black = (0,0,0)

Display.fill(purple)
pygame.draw.rect(Display,red,(400,300,200,80))

答案 1 :(得分:2)

PyGame在内存中绘制缓冲区,updata() / flip()将数据从此缓冲区发送到视频卡,该视频卡将在监视器上显示。

对于轻弹屏幕的问题是流行的方法,被称为Double Buffering

如果您在update()之后绘制,那么它将不会发送到视频卡。

BTW:在普通游戏中,你在update()循环中绘制并使用while,这样就不会出问题。