М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет231/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   227   228   229   230   231   232   233   234   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
def _check_bullet_alien_collisions(self):
...
if not self.aliens:
# Уничтожить существующие снаряды и создать новый флот.
self.bullets.empty()
self.create_fleet()
self.settings.increase_speed()
# Увеличение уровня.
self.stats.level += 1
self.sb.prep_level()
Если все пришельцы уничтожены, программа увеличивает значение 
stats.level
и вызывает 
prep_level()
для обновления уровня.
Чтобы убедиться в том, что изображения текущего счета и уровня правильно об-
новляются в начале новой игры, мы вызываем 
prep_level()
при нажатии кнопки 
Play
:
alien_invasion.py
def _check_play_button(self, mouse_pos):
...
if button_clicked and not stats.game_active:
...
self.sb.prep_score()
sb.prep_level()
...
Метод 
prep_level()
вызывается сразу же после вызова 
prep_score()
.
Теперь количество пройденных уровней отображается на экране (рис. 14.5).
ПРИМЕЧАНИЕ
В некоторых классических играх выводимая информация снабжается 
текстовыми метками: «Уровень», «Рекорд» и т . д . Мы эти метки опустили, потому что 
смысл каждого числа понятен каждому, кто сыграл в Alien Invasion . Если вы включи-
ли эти метки, добавьте их в строки непосредственно перед вызовами 
font.render()
в Scoreboard .
Вывод количества кораблей
Остается вывести количество кораблей, оставшихся у игрока, но на этот раз инфор-
мация будет выводиться в графическом виде. Как во многих классических аркад-
ных играх, в левом верхнем углу экрана программа рисует несколько изображений 
корабля. Каждый корабль обозначает одну оставшуюся попытку.


314
Глава 14 • Ведение счета
Рис. 14.5.
Текущий уровень выводится под текущим счетом
Для начала нужно сделать так, чтобы класс 
Ship
наследовал от 
Sprite
— это не-
обходимо для создания группы кораблей:
ship.py
import pygame
from pygame.sprite import Sprite

class Ship(Sprite):
# Класс для управления кораблем.
def __init__(self, ai_game):
"""Инициализирует корабль и задает его начальную позицию."""

super().__init__()
...
Здесь мы импортируем 
Sprite
, объявляем о наследовании 
Ship
от 
Sprite

и вы-
зываем 
super()
в начале 
__init__()

.
Далее необходимо изменить 
Scoreboard
и создать группу кораблей для вывода на 
экран. Команды 
import
выглядят так:


Достарыңызбен бөлісу:
1   ...   227   228   229   230   231   232   233   234   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет