А надо было добавить четыре строчки кода )) Но, кто же знал )))
Я подозревал что должна быть функция очищения экрана от спрайтов, и благодаря вам нашел ее. (Просто вызываю ее на каждое нажатие клавиши, перед рисование спрайта и она, соответственно стирает старый перед прорисовкой нового)
Вот, в таком виде все работает как задумано:
import os, sys
import pygame
from pygame.locals import *
import random
from helpers import *
pygame.init()
pygame.key.set_repeat(300, 20)
window = pygame.display.set_mode((640, 480))
pygame.display.flip()
bground = pygame.Surface(window.get_size())
bground = bground.convert()
bground.fill((0,0,0))
class Bpoint(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image('bpoint.png', -1)
self.rect.move(20, 20)
self.x_dist = 0
self.y_dist = 0
def move(self):
xMove = 0
yMove = 0
if event.type == KEYDOWN:
if event.key == K_UP:
xMove = self.x_dist
yMove = self.y_dist
self.rect.move_ip(xMove, yMove)
bpoint = Bpoint()
bpoint_sprites = pygame.sprite.RenderPlain((bpoint))
bpoint_sprites.draw(window)
pygame.display.flip()
while 1:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP:
bpoint_sprites.clear(window, bground)
bpoint.x_dist = random.randint(10,50)
bpoint.y_dist = random.randint(10,50)
bpoint.move()
bpoint_sprites.draw(window)
pygame.display.update()