Ponieważ masz w linii 5 window (globalnie zadeklarowane)
import pygame
import time
pygame.init()
window = pygame.display.set_mode((1280, 720))
class Sciana:
def __init__(self, x, y, szerokosc, wysokosc):
self.x_cord = x
self.y_cord = y
self.szerokosc = szerokosc
self.wysokosc = wysokosc
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.szerokosc, self.wysokosc)
def __str__(self):
return f"Sciana({self.x_cord},{self.y_cord},{self.szerokosc},{self.wysokosc})"
def draw(self):
pygame.draw.rect(window, (0,0,0) , self.hitbox)
item = 'sciana'
image = pygame.image.load('select.png')
sciany = [] # pusta lista, więc ...
pozycja = 0 # .. tu zero
x = 0
y = 0
speed = 25
run = True
while run:
time.sleep(0.05)
pygame.time.Clock().tick(30)
keys = pygame.key.get_pressed()
window.fill((255,255,255))
for event in pygame.event.get():
if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]:
run = False
if keys[pygame.K_1]:
item = 'sciana'
if keys[pygame.K_2]:
item = 'lava'
if keys[pygame.K_RIGHT]:
x += speed
if keys[pygame.K_LEFT]:
x -= speed
if keys[pygame.K_UP]:
y -= speed
if keys[pygame.K_DOWN]:
y += speed
if keys[pygame.K_SPACE]:
time.sleep(0.5)
if item == 'sciana':
sciany.insert(pozycja, Sciana(x,y,25,25))
print('-'*20)
for sciana in sciany:
print(sciana)
print('-'*20)
pozycja += 1
if keys[pygame.K_LSHIFT]:
print(sciany)
player = window.blit(image,(x, y,))
window.blit(image,(x, y,))
for sciana in sciany:
sciana.draw()
pygame.display.update()
pygame.quit()
wtedy wystarczy
...
window.blit(image,(x, y,))
for sciana in sciany:
sciana.draw()
pygame.display.update()
...
bo masz
def draw(self):
pygame.draw.rect(window, (0,0,0) , self.hitbox)
BTW, Twój kod ma problem z wychodzeniem w czasie "przesuwania" za pomocą klawiszy strzałek poza zakres okna.
Sprawdź np. ten kod 
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
window_size = (600, 400)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption('Square')
clock = pygame.time.Clock()
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
window_frame = Rect(0, 0, window_size[0], window_size[1])
square_green = Rect(300, 100, 100, 100)
square_blue = Rect(0, 0, 100, 100)
pixel_step = 5
while True:
keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]:
pygame.quit()
exit()
blue_square_x_pos = 0
blue_square_y_pos = 0
if keys[pygame.K_RIGHT]:
blue_square_x_pos = pixel_step
if keys[pygame.K_LEFT]:
blue_square_x_pos = -pixel_step
if keys[pygame.K_DOWN]:
blue_square_y_pos = pixel_step
if keys[pygame.K_UP]:
blue_square_y_pos = -pixel_step
square_blue.move_ip(blue_square_x_pos, blue_square_y_pos)
collide = pygame.Rect.colliderect(square_blue, square_green)
if collide:
if keys[pygame.K_RIGHT]:
blue_square_x_pos = -pixel_step
if keys[pygame.K_LEFT]:
blue_square_x_pos = pixel_step
if keys[pygame.K_DOWN]:
blue_square_y_pos = -pixel_step
if keys[pygame.K_UP]:
blue_square_y_pos = pixel_step
square_blue.move_ip(blue_square_x_pos, blue_square_y_pos)
square_blue.clamp_ip(window_frame)
window.fill(BLACK)
pygame.draw.rect(window, GREEN, square_green)
pygame.draw.rect(window, BLUE, square_blue)
pygame.display.flip()
clock.tick(60)
no chyba, że przewidujesz duże mapy (poziomy) i będziesz "skrolował" obraz w oknie.