Answer the question
In order to leave comments, you need to log in
Non-working code from Python Crash Course book?
I am learning the basics of Python in the Python Crash Course and came across a problem with non-working code when displaying a ship on the screen.
Main game module
import pygame
import sys
from setar import Settings
from ship import Ship
class AlienInvasion:
"""Класс для управления ресурсами и поведением игры."""
def __init__(self):
"""Инициализирует игру и создает игровые ресурсы."""
pygame.init()
self.Settings = Settings()
#Задаем разрешение из настроек
self.screen = pygame.display.set_mode(
(self.Settings.screen_width, self.Settings.screen_height))
pygame.display.set_caption("Alien Invasion")
#ЗДЕСЬ ОШИБКА ПРИ ОБЪЯВЛЕНИИ ЭКЗЕМПЛЯРА КЛАССА В КОНСТРУКТОРЕ
self.ship=Ship(screen)
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()
import pygame
class Ship():
"""Класс для управления кораблем."""
def __init__(self,ai_game):
"""Инициализирует корабль и задает его начальную позицию."""
self.screen =ai_game.screen
self.screen_rect = ai.game.get_rect()
# Загружает изображение корабля и получает прямоугольник.
self.image = pygame.image.load('Загрузки/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)
class Settings():
def __init__(self):
self.screen_width = 1280#Разрешение поверхности
self.screen_height = 720
self.bg_color=(32, 178, 170)#Цвет
Answer the question
In order to leave comments, you need to log in
If you copied it by hand, then check it, most likely you didn’t write it right or there was a typo in the book.
Hi. Faced the same. Actually, you need to write
self.ship=Ship(self)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question