NameError: name 'self' is not defined как исправить?
import pygame
import sys
import random
import time
class Game():
pygame.init()
screen_width=800
screen_height=800
self.red = pygame.Color(255, 0, 0)
self.green = pygame.Color(0,255,0)
self.black = pygame.Color(0, 0, 0)
self.white = pygame.Color(255, 255, 255)
self.brown = pygame.Color(165, 42, 42)
# будет задавать количество кадров в секунду
self.fps_controller = pygame.time.Clock()
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Дописать в классе:
- Конструктор (
__init__) - Запустить цикл обработки событий, например в отдельном методе (
run) - Запуск класса:
game = Game() # Создание объекта класса game.run() # Запуск метода run
Пример:
import pygame
class Game:
def __init__(self):
pygame.init()
self.screen_width = 800
self.screen_height = 800
self.game_active = False
self.FPS = 60
self.screen = pygame.display.set_mode((self.screen_width, self.screen_height))
self.red = pygame.Color(255, 0, 0)
self.green = pygame.Color(0,255,0)
self.black = pygame.Color(0, 0, 0)
self.white = pygame.Color(255, 255, 255)
self.brown = pygame.Color(165, 42, 42)
# будет задавать количество кадров в секунду
self.fps_controller = pygame.time.Clock()
def run(self):
self.game_active = True
while self.game_active:
# Получение всех событий
for event in pygame.event.get():
# Проверка события "Выход"
if event.type == pygame.QUIT:
self.game_active = False
break
self.screen.fill(self.red)
pygame.display.update()
pygame.display.set_caption("move_circle [{} fps]".format(int(self.fps_controller.get_fps())))
self.fps_controller.tick(self.FPS)
game = Game()
game.run()