Функция рисования вашего спрайта вызывает у вас проблемы. Он заполняет и обновляет отображение каждый раз, когда создается спрайт. Это означает, что если у вас есть два или более объектов, будет отображаться только последний. Используйте только функцию блита для каждого объекта и заполните / обновите экран только один раз каждый игровой цикл.
# Import the library PyGame
import pygame; pygame.init()
# Create the window/GUI
window = pygame.display.set_mode((800, 800))
pygame.display.set_caption('Space Invaders')
class Sprite:
"""A class that you assign to the a sprite, it has the functions draw() and resize()"""
def __init__(self, fileto):
self.x = 330
self.y = 700
self.width = 100
self.height = 100
self.image = pygame.image.load(fileto).convert()
# Blit the sprite onto the screen, ex: plane.draw()
def draw(self):
window.blit(self.image, (self.x, self.y))
# Assign the variable plane to the class "sprite"
plane = Sprite("plane.gif")
projectile = Sprite("projectile.png")
while True:
# Clear the screen.
window.fill((255, 255, 255))
# Draw all objects to the screen.
plane.draw()
projectile.draw()
# Make all everything you've drawn appear on your display.
pygame.display.update() # pygame.display.flip() works too
Это будет правильно рисовать все спрайты. Однако через несколько секунд произойдет сбой, поскольку вы не обрабатываете события. Вам нужно будет найти учебник по этому вопросу, прежде чем вы сможете продолжить.