Im having problems with blitting images to rect objects in pygame. i have a background image blitted to my main pygame window, and also an image blitted to a rect object on the screen which moves. the problem i am having is the rect object is overlapping my background image when its moving around. i was looking to only be able to see the green helicopter shape and not the black outline around it. sorry if i havent explained this very well. will try to include all files im using. Thanks for any help
import pygame as pg
import random as r
import time
pg.init()
MAX_X = 1190
MAX_Y = 590
MIN_X = 10
MIN_Y = 10
SIZE = 100
SPEED = 1
COLOR = (0,255,0)
move_amount = 0
wn = pg.display.set_mode((1200, 600))
BG_IMG = pg.image.load('bg.png').convert()
BG_IMG = pg.transform.scale(BG_IMG, (1200, 600))
class Wall (pg.Rect):
    def __init__(self, posX, posY):
        self.xcor = posX
        self.ycor = posY
        self.rect = None
class Heli (pg.Rect):
    def __init__(self, posX, posY):
        self.image = pg.image.load('art.png').convert()
        self.rect = self.image.get_rect()
        
        self.xcor = posX
        self.ycor = posY
        
# top and bottom constant walls
TOP = pg.Rect(MIN_X, MIN_Y, MAX_X, 3)
BOTTOM = pg.Rect(MIN_X, MAX_Y, MAX_X, 3)
heli = Heli(MIN_X, MAX_Y //2)
# keep moving walls in a list
moving_walls = [Wall(MAX_X, r.randint((MIN_Y + 10), (MAX_Y - 10)))]
# main loop
while True:
    # fill screen
    wn.fill('black')
    
    # editing objects to move
    
    # blitting must happen before everything else
    
    pg.draw.rect(wn,COLOR, heli.rect)
    
    wn.blit(BG_IMG, (0,0))
    wn.blit(heli.image, heli.rect)
    heli.rect.y += move_amount
    heli.rect.y += 1
    # use a variable to control how much movement is happening
    # movement happens continuosly
    # if key down it  oves if key up it doesnt
    
    
    for wall in moving_walls :
        wall.rect = pg.Rect(wall.xcor, wall.ycor, 3, SIZE)
        pg.draw.rect(wn, COLOR, wall.rect)
        wall.xcor -= SPEED
        if wall.xcor < MIN_X + 10:
            wall.xcor = MAX_X
            wall.ycor = r.randint((MIN_Y), (MAX_Y - SIZE))
        
    # drawing all objects back to the screen
    pg.draw.rect(wn, COLOR, TOP)
    pg.draw.rect(wn, COLOR, BOTTOM)
    # update window
    pg.display.update()
    # event handling
    for ev in pg.event.get():
        if ev.type == pg.KEYDOWN:
            if ev.key == pg.K_UP:
                move_amount = -3
        if ev.type == pg.KEYUP:
            move_amount = 0
                
        if ev.type == pg.QUIT:
            pg.quit()
    time.sleep(0.01)