Тема: Python. В підручнику помилка?
Підкажіть хто в цьому шарить.
Я вирішив вивчати пайтон, і продбав для цього книгу "Вивчаємо Python" Еріка Метіза.
Підозрюю, що в ній є помилка.
В 12 главі, ми починаємо програмувати першу гру, повторючи код виявилось, що він не працює (або я просто чогось не розумію)
Код має вивести вікно з кораблем, а замісць цього видає помилку: NameError: name 'screen' is not defined
Це я чогось не розумію, чи в книзі дійсно помилка?
import sys
import pygame
from setting import Setting
from ship import Ship
class AlienInvasion:
"""Класс для управления ресурса и и поведением игры"""
def __init__(self):
"""Инициализирует игру и создает игровые ресурсы"""
pygame.init()
self.settings = Setting()
self.ship = Ship(screen)
self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
pygame.display.set_caption("Alian Invasion")
self.ship = Ship(self.screen)
"""Назначение цвета фона"""
self.bg_color = (230, 230, 230)
def run_game(self):
"""Запуск основного цикла игры"""
while True:
"""Отслеживание событий клавиатуры и мишы"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
""" При каждом проходе цикла перерисовываеться экран"""
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
"""Отображение последнего прорисованного экрана"""
pygame.display.flip()
if __name__ == '__main__':
"""Создание экземпляра и запуск игры."""
ai = AlienInvasion()
ai.run_game()
class Setting():
def __init__(self):
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (0, 191, 255)
import pygame
class Ship():
"""Класс для управления кораблем"""
def __init__(self, ai_game):
"""Инициализирует корабль и задает его начальное положение"""
self.screen = ai_game.screen
self.screen_rect = ai_game.screen.get_rect()
"""Загружаем изобаражение корабля и получаем прямоугольник"""
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
"""Каждый новый корабль появляеться у нижнего края экрана"""
self. rect.midbottom = self.screen_rect.midbottom
def blitme(self):
"""Рисут корабль в текущей позиции"""
self.screen.blit(self.image, self.rect)