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



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

scoreboard.py
import pygame.font
from pygame.sprite import Group
from ship import Ship


Подсчет очков
315
Так как мы собираемся создать группу кораблей, программа импортирует классы 
Group
и 
Ship
.
Метод 
__init__()
выглядит так:
scoreboard.py
def __init__(self, ai_game):
"""Инициализирует атрибуты подсчета очков."""
self.ai_game = ai_game
self.screen = ai_game.screen
...
self.prep_level()
self.prep_ships()
Экземпляр игры присваивается атрибуту, так как он понадобится нам для создания 
кораблей. Метод 
prep_ships()
будет вызываться после 
prep_level()
. Он выглядит 
так:
scoreboard.py
def prep_ships(self):
"""Сообщает количество оставшихся кораблей."""

self.ships = Group()

for ship_number in range(self.stats.ships_left):
ship = Ship(self.ai_game)

ship.rect.x = 10 + ship_number * ship.rect.width

ship.rect.y = 10

self.ships.add(ship)
Метод 
prep_ships()
создает пустую группу 
self.ships
для хранения экземпляров 
кораблей 

. В ходе заполнения этой группы цикл выполняется по одному разу 
для каждого корабля, оставшегося у игрока 

. В цикле создается новый корабль, 
а координата 
x
этого корабля задается так, чтобы корабли размещались рядом друг 
с другом, разделенные интервалами величиной 10 пикселов 

. Координата 
y
за-
дается так, чтобы корабли были смещены на 10 пикселов от верхнего края экрана 
и были выровнены по изображению текущего счета 

. Наконец, каждый корабль 
добавляется в группу 
ships

.
Следующим шагом становится вывод кораблей на экран:
scoreboard.py
def show_score(self):
"""Выводит очки, уровень и количество кораблей на экран."""
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.high_score_image, self.high_score_rect)
self.screen.blit(self.level_image, self.level_rect)
self.ships.draw(self.screen)
При выводе кораблей на экран мы вызываем метод 
draw()
для группы, а Pygame 
рисует каждый отдельный корабль.


316

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




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

    Басты бет