Здравствуйте. Пытаюсь написать первую игру используя pygame и столкнулся с такой проблемой. При запуске чёрный экран, как на на картинке. При нажимании на выделенное место игра запускается, т.к. там кнопка.
Ниже привожу фрагменты кода
Код кнопки
import pygame.font
class Button:
def __init__(self, ai_settings, screen, msg):
"""Инициализирует атрибуты кнопки"""
self.screen = screen
self.screen_rect = screen.get_rect()
# назначение размеров и свойств кнопки
self.width, self.height = 200, 50
self.button_color = (0, 255, 0)
self.text_color = (255, 255, 255)
self.font = pygame.font.SysFont("Verdana", 48)
# построение объекта rect кнопки и выравнивание по центру экрана
self.rect = pygame.Rect(0, 0, self.width, self.height)
self.rect.center = self.screen_rect.center
# сообщение кнопки создаётся только один раз
self.prep_msg(msg)
def prep_msg(self, msg):
"""
Преобразует msg в прямоугольник и выравнивает текст по центру
"""
self.msg_image = self.font.render(msg, True, self.text_color, self.button_color)
self.msg_image_rect = self.msg_image.get_rect()
self.msg_image_rect.center = self.rect.center
def draw_button(self):
"""Отображение пустой кнопки и вывод сообщения"""
self.screen.fill(self.button_color, self.rect)
self.screen.blit(self.msg_image, self.msg_image_rect)
Функции игры связанные с кнопкой
def check_events(ai_settings, screen, stats, play_button, ship, aliens, bullets):
"""
Обрабатывает нажатия клавиш и события мыши
"""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydown_events(event, ai_settings, screen, ship, bullets)
elif event.type == pygame.KEYUP:
check_keyup_events(event, ship)
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = pygame.mouse.get_pos()
check_play_button(ai_settings, screen, stats, play_button, ship,
aliens, bullets, mouse_x, mouse_y)
def check_play_button(ai_settings, screen, stats, play_button, ship, aliens,
bullets, mouse_x, mouse_y):
"""Запускает новую игру при нажатии кнопки Play"""
if play_button.rect.collidepoint(mouse_x, mouse_y):
# сброс игровой статистики
stats.reset_stats()
stats.game_active = True
# очистка списков пришельцев и пуль
aliens.empty()
bullets.empty()
# создание нового флота и размещение корабля в центре
create_fleet(ai_settings, screen, ship, aliens)
ship.center_ship()
def update_screen(ai_settings, screen, stats, ship, aliens, bullets, play_button):
"""
Обновляет изображение на экране и
отображает новый экран
"""
# При каждом проходе цикла перерисовывается экран
screen.fill(ai_settings.bg_color)
# Все пули выводятся позади изображений корабля пришельцев
for bullet in bullets.sprites():
bullet.draw_bullet()
ship.blitme()
aliens.draw(screen)
# Кнопка Play отображается в том случае, если игра неактивна
if not stats.game_active:
play_button.draw_button()
# Отображение последнего прорисованного экрана
pygame.display.flip()
Код отвечающий за запуск игры в неактивном состоянии
# Игра запускается в неактивном состоянии
self.game_active = False
Если нужно, могу выложить код полностью.
Так вот вопрос. Почему игра запускается с чёрным экраном и как это исправить? Заранее спасибо
P.S. Здесь весь код
https://github.com/Gorlinskyi/alien_invasion