为什么画完后这些圆不消失?

2024-05-04 21:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行这个代码的时候,它只是做一个圆的轨迹,而不是一个圆在移动。代码如下:

import pygame, sys, random
from pygame.locals import *
pygame.init()
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
WHITE = (255, 255, 255)

circX = 250 
circY= 250
diffX= 0
diffY=0

while True:
 for event in pygame.event.get():
  if event.type == QUIT:
   pygame.quit()
   sys.exit()
 diffX += random.randint(-1,1)
 diffY += random.randint(-1,1)
 circX += diffX
 circY += diffY
 circLocate = (circX,circY)
 pygame.draw.circle(windowSurface, WHITE, circLocate, 10, 0)
 pygame.display.flip()

Tags: 代码importeventdisplaysysrandompygamewhite
2条回答

每次你想让圆圈移动时,这个添加项都会清除你的屏幕

while True:
 for event in pygame.event.get():
  if event.type == QUIT:
   pygame.quit()
   sys.exit()
 windowSurface.fill(WHITE) //add this line to clear the screen
 diffX += random.randint(-1,1)
 diffY += random.randint(-1,1)
 circX += diffX
 circY += diffY
 circLocate = (circX,circY)
 pygame.draw.circle(windowSurface, WHITE, circLocate, 10, 0)
 pygame.display.flip()

你必须清除屏幕,让它看起来像是物体在移动。你知道吗

windowSurface.fill(WHITE)

因此:

import pygame, sys, random
from pygame.locals import *
pygame.init()
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
WHITE = (255, 255, 255)

circX = 250 
circY= 250
diffX= 0
diffY=0

while True:
 for event in pygame.event.get():
  if event.type == QUIT:
   pygame.quit()
   sys.exit()
 diffX += random.randint(-1,1)
 diffY += random.randint(-1,1)
 circX += diffX
 circY += diffY
 circLocate = (circX,circY)
 windowSurface.fill(WHITE)
 pygame.draw.circle(windowSurface, WHITE, circLocate, 10, 0)
 pygame.display.flip()

但是,请确保windowSurface.fill()pygame.draw.circle()之前是,否则,它将只显示一个白色屏幕。你知道吗

相关问题 更多 >