При создании игры на Pygame появился зелёный экран с точками, не понимаю, в чём ошибка, буду очень благодарна за помощь!

from kitten_classes import * #это основной файл kittens

def main():
    game = Kittens() 
    game.launch()

if __name__ == "__main__":
     main()

import pygame #это файл kitten_classes с основными алгоритмами 


class Kittens: 

    def __init__(self): 
        pygame.init()
        self.initialize_screen()
        self.levels = self.load_levels()
        self.running = True

    def initialize_screen(self): 
  
        pygame.display.set_mode(1280, 960) 
 pygame.display.set_caption("Kittens") 


    def load_levels(self):
        with open("pygame_kittens/levls/levels") as file:
            levels = [] 

            for line in file: 
                line = line.rstrip()
                if line:
                    if line.startswith("LEVEL"): 
                        level = {"map": [], "player": [], "crates": []} 
                    elif line.startswith("P: "):
                        x, y = map(int, line[3:].split(",")) 
                    
level["player"].append((x, y)) 
                

elif line.startswith("C: "):
                        crates = line[3:].split()
                        for crate in crates:
                            x, y = map(int, crate.split(","))
                        
level["crates"].append((x, y)) 
                    elif line == "END LEVEL":
                    
levels.append(level)
                    else:
                    
level["map"].append(line)
         return tuple(levels)



    def launch(self): 
        while self.running: 
            self.handle_events()
            self.updates()
            self.updates_display()

    def handle_events(self):
        for event in pygame.event.get(): 
            if event.type == pygame.QUIT:  
                self.running = False 



    def updates(self):
    ...

    def updates_display(self):
    ...


    def del(self):
        pygame.quit()

#дальше идёт файл с уровнем
LEVEL 1
       #####
    ####---#
    #----X-#
    ####---#
       #####
    P: 1,2  
    C: 6,2 5,3 


END LEVEL

Ответы (2 шт):

Автор решения: Иван

Столкнулся с той же проблемой, решил её, удалив строки:

from pygame.examples.go_over_there import clock, screen
from pygame.examples.moveit import WIDTH, HEIGHT

которые появились серым под import pygame

→ Ссылка
Автор решения: Smeto

Зелёный экран с точками в Pygame обычно возникает, когда ты не очищаешь экран перед отрисовкой нового кадра или не обновляешь экран после отрисовки.

from kitten_classes import *  # это основной файл kittens

def main():
    game = Kittens()
    game.launch()

if __name__ == "__main__":
    main()

import pygame  # это файл kitten_classes с основными алгоритмами


class Kittens:

    def __init__(self):
        pygame.init()
        self.initialize_screen()
        self.levels = self.load_levels()
        self.running = True

    def initialize_screen(self):
        self.screen = pygame.display.set_mode((1280, 960))
        pygame.display.set_caption("Kittens")

    def load_levels(self):
        with open("pygame_kittens/levls/levels") as file:
            levels = []

            for line in file:
                line = line.rstrip()
                if line:
                    if line.startswith("LEVEL"):
                        level = {"map": [], "player": [], "crates": []}
                    elif line.startswith("P: "):
                        x, y = map(int, line[3:].split(","))
                        level["player"].append((x, y))
                    elif line.startswith("C: "):
                        crates = line[3:].split()
                        for crate in crates:
                            x, y = map(int, crate.split(","))
                            level["crates"].append((x, y))
                    elif line == "END LEVEL":
                        levels.append(level)
                    else:
                        level["map"].append(line)
        return tuple(levels)

    def launch(self):
        while self.running:
            self.handle_events()
            self.updates()
            self.updates_display()

    def handle_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.running = False

    def updates(self):
        pass

    def updates_display(self):
        # Очищаем экран
        self.screen.fill((0, 0, 0))  # Заливаем экран чёрным цветом

        # Обновляем экран
        pygame.display.flip()

    def __del__(self):
        pygame.quit()

# дальше идёт файл с уровнем
# LEVEL 1
#        #####
#     ####---#
#     #----X-#
#     ####---#
#        #####
#     P: 1,2
#     C: 6,2 5,3
#
#
# END LEVEL

Твои ошибки:

  1. Ошибка в initialize_screen: Метод pygame.display.set_mode принимает кортеж с размерами экрана, а не два отдельных аргумента. Нужно исправить на pygame.display.set_mode((1280, 960))

  2. Отсутствие очистки экрана: В методе updates_display нужно очищать экран перед отрисовкой нового кадра с помощью pygame.Surface.fill.

  3. Отсутствие обновления экрана: После отрисовки всех объектов нужно обновлять экран с помощью pygame.display.flip() или pygame.display.update().

→ Ссылка