2014-09-22 2 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

파이 게임은 매번 같은 대상이 아닌 캔버스와 같습니다. 그릴 때마다 새로운 원을 만듭니다. 이전에 그렸던 원을 제거하여 원을 "이동"시키십시오. – Michael

+0

@ microsby0 다른 방법으로 라운드 할 때마다 _same_ 캔버스가 생기므로 이전 드로잉을 지울 필요가 있습니다. – Basic

+0

그것은 가난한 표현이었고, 나는 "파이 게임이 캔버스와 같다, 원형이 매번 같은 대상이 아니다"라고 말했습니다. 나를 잡아 주셔서 감사합니다. – Michael

답변

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()는 다른, 그것은 단지 흰색 화면이 표시됩니다 전에 있는지 확인하십시오.

관련 문제