Problema con pygame.draw.rect

Ho appena iniziato a studiare Pygame con lo scopo di sviluppare giochi per il pinguino,ma ho iniziato male.Con il seguente codice volevo disegnare un quadrato e spostarlo sull’asse x
ma al posto di spostarsi,si comporta come un barra d’avanzamento! Non riesco a individuare il motivo di tale comportamento,voi notate qualcosa?

import sys import pygame import time from pygame.locals import * pygame.init() #Window size costants declaration WIDTH=800 HEIGHT=600 #Color constants declaration BLUE=(0,0,255) RED=(255,0,0) GREEN=(0,255,0) YELLOW=(255,255,0) ORANGE=(255,165,0) PURPLE=(255,0,255) WHITE=(255,255,255) rectx=50 recty=50 side=75 window=pygame.display.set_mode((WIDTH,HEIGHT)) window.fill(WHITE) pygame.display.set_caption('AnimatedScreen') while True: for event in pygame.event.get(): if event.type==QUIT: pygame.quit() sys.exit() pygame.display.update() pygame.draw.rect(window,YELLOW,[rectx,recty,side,side]) time.spleep(0.5) rectx=rectx+10

limitiamo i valori ad un solo pixel (quello corrispondente all’angolo basso a sinistra),
ipotizziamo uno sfondo blu e che si iniza a disegnare dal pixel 10.

  • il pixel 10 passa da blu a giallo
  • l’angolo viene spostato al pixel 20
  • il pixel 10 deve ritornare di colore blu
  • il pixel 20 passa da blu a giallo

un’altra cosa: prima si disegna e poi si fa il refresh dello schermo:

....
pygame.draw.rect(.....)
....
pygame.display.update()
....

R.

Grazie romulus per la risposta.In effettin hai ragione,ogni volta devo ridisegnare lo sfondo.Ho corretto con questo codice:

import sys
import pygame
import time
from pygame.locals import *
pygame.init()
#Window size costants declaration
WIDTH=800
HEIGHT=600
#Color constants declaration
BLUE=(0,0,255)
RED=(255,0,0)
GREEN=(0,255,0)
YELLOW=(255,255,0)
ORANGE=(255,165,0)
PURPLE=(255,0,255)
WHITE=(255,255,255)
rectx=50
recty=50
side=75
window=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('Killer')
while True:
	for event in pygame.event.get():
		if event.type==QUIT:
			pygame.quit()
			sys.exit()
	window.fill(WHITE)
	if rectx + side < WIDTH: 
		rectx+=1;
	pygame.draw.rect(window,YELLOW,[rectx,recty,side,side])
	pygame.display.update()