2014-09-22 35 views
0

当我运行这个代码时,它只是制作一圈圆圈而不是一圈移动。代码如下:为什么圈子在画完后不会消失?

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() 
+1

Pygame就像一个画布,每次都是不一样的对象。每次画画时都会创建一个新的圈子。您需要删除您之前绘制的圆圈,以使圆圈“移动” – Michael 2014-09-22 17:38:56

+0

@ microsby0其他方式圆形...您每次都得到同样的画布,因此需要清除之前的图形。 – Basic 2014-09-23 01:46:16

+0

这是糟糕的措辞,我的意思是“Pygame就像一个画布,圆圈不是每次都是同一个对象”。感谢您为我抓到。 – Michael 2014-09-23 13:28:33

回答

0

这除了你应该想的圆周运动

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() 
0

你要清楚的屏幕,看起来就像物体移动每次清除屏幕。

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(),否则,它只会显示一个白色的屏幕。