как сделать так, чтобы каждый новый запуск приложения pygame закрывал предыдущее окно. Думал, что нет такой возможности и печалился.
Сейчас на фоне событий решил отвлечься, попробовать повторить то, что делал по книге, по памяти. И за всё время впервые столкнулся с закрытием нового окна предыдущего. Без понятия, что я такого написал. Экспериментальным путём выяснил, что на это влияет функция
print в начале метода. Не понимаю, как это работает. Стоит её удалить или закомментировать и новое окно уже не закрывает предыдущее.
Если что, сам код:
# главный файл
import pygame as pg
from pygame.sprite import Group
from settings import Settings
from ship import Ship
from alien import Alien
import engine
def start():
settings = Settings()
pg.init()
screen = pg.display.set_mode((settings.SCREEN_WIDTH, settings.SCREEN_HEIGHT))
ship = Ship(screen, settings)
alien = Alien(screen, settings)
bullets = Group()
while True:
engine.check_all_events(screen, settings, ship, bullets)
engine.update_screen(screen, settings, ship, bullets, alien)
engine.update_bullets(bullets)
start()
(за код не пинайте. Всё в процессе вспоминания и обучения.)
import pygame as pg
from pygame.sprite import Group
class Alien():
def __init__(self, screen, settings):
self.screen = screen
self.screen_rect = self.screen
self.image = pg.image.load('img/alien.png')
self.rect = self.image.get_rect()
self.start_pos_X = self.rect.width
self.start_pos_Y = self.rect.height
self.aliens_amount_X = round(int((settings.SCREEN_WIDTH / self.rect.width) / 2))
def draw_alien(self):
print(self.aliens_amount_X)
for alien in range(self.aliens_amount_X):
self.rect.x = self.start_pos_X
self.rect.y = self.start_pos_Y
self.screen.blit(self.image, self.rect)
# Вся суть вот в этом
print
def draw_alien(self):
print(self.aliens_amount_X)
Как? Почему? Не важно, что будет печатать, даже если
print('no_war')