Книга «Изучаем Python»



Pdf көрінісі
бет147/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   143   144   145   146   147   148   149   150   ...   238
Байланысты:
2 5343781172763690906

УПРАЖНЕНИЯ

13-6 . Конец игры: в коде из упражнения 13-5 (с . 274) подсчитывайте, сколько раз игрок 

не поймал мяч . После трех промахов игра должна заканчиваться .

Итоги


В этой главе вы научились добавлять в игру большое количество одинаковых 

элементов на примере флота пришельцев. Вы узнали, как использовать вложен-

ные циклы для создания сетки с элементами, а также привели игровые элементы 

в движение, вызывая метод 

update()

 каждого элемента. Вы научились управлять 

перемещением объектов на экране и обрабатывать различные события (например, 

достижение края экрана). Вы также узнали, как обнаруживать коллизии и реаги-

ровать на них (на примере попаданий пуль в пришельцев и столкновений при-

шельцев с кораблем). В завершение главы рассматривалась тема ведения игровой 

статистики и использования флага для проверки окончания игры.

В последней главе этого проекта будет добавлена кнопка 

Play

, чтобы игрок мог 



самостоятельно запустить свою первую игру, а также повторить игру после ее за-

вершения. После каждого уничтожения вражеского флота скорость игры будет 

возрастать, а мы реализуем систему подсчета очков. В результате вы получите 

полностью работоспособную игру!




14

Ведение счета

В этой главе построение игры Alien Invasion будет завершено. Мы добавим 

кнопку 


Play

 для запуска игры по желанию игрока или перезапуска игры после 

ее завершения. Мы также изменим игру, чтобы она ускорялась при переходе 

игрока на следующий уровень, и реализуем систему подсчета очков. К концу 

главы вы будете знать достаточно, чтобы заняться разработкой игр, сложность 

которых нарастает по ходу игры и в которых реализована система подсчета 

очков.

Добавление кнопки Play



В этом разделе мы добавим кнопку 

Play


, которая отображается перед началом игры 

и появляется после ее завершения, чтобы игрок мог сыграть снова.

В текущей версии игра начинается сразу же после запуска 

alien_invasion .py

. После 

очередных изменений игра будет запускаться в неактивном состоянии и предла-

гать игроку нажать кнопку 

Play


 для запуска. Для этого включите следующий код 

в 

game_stats .py



:

game_stats.py

def __init__(self, ai_settings):

"""Инициализирует статистику."""

self.ai_settings = ai_settings

self.reset_stats()

    # Игра запускается в неактивном состоянии.

    self.game_active = False

def reset_stats(self):

...

Итак, программа запускается в неактивном состоянии, а игру можно запустить 



только нажатием кнопки 

Play


.

Создание класса Button

Так как в Pygame не существует встроенного метода создания кнопок, мы напишем 

класс 


Button

 для создания заполненного прямоугольника с текстовой надписью. 




282    Глава 14  •  Ведение счета

Следующий код может использоваться для создания кнопок в любой игре. Ниже 

приведена первая часть класса 

Button


; сохраните ее в файле 

button .py

:

button.py

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(None, 48)



        

        # Построение объекта rect кнопки и выравнивание по центру экрана.

        self.rect = pygame.Rect(0, 0, self.width, self.height)



        self.rect.center = self.screen_rect.center

        


        # Сообщение кнопки создается только один раз.

        self.prep_msg(msg)



Сначала программа импортирует модуль 

pygame .font

, который позволяет Pygame 

выводить текст на экран. Метод 

__init__()

 получает параметры 

self

, объекты 



ai_settings

 и 


screen

, а также строку 

msg

 с текстом кнопки . Размеры кнопки 



задаются в точке , после чего атрибуты 

button_color

 и 

text_color



 задаются так, 

чтобы прямоугольник кнопки был окрашен в ярко-зеленый цвет, а текст выводился 

белым цветом.

В точке  происходит подготовка атрибута 

font

 для вывода текста. Аргумент 



None

 

сообщает Pygame, что для вывода текста должен использоваться шрифт по умолча-



нию, а значение 48 определяет размер текста. Чтобы выровнять кнопку по центру 

экрана, мы создаем объект 

rect

 для кнопки  и задаем его атрибут 



center

 в соот-


ветствии с одноименным атрибутом экрана.

Pygame выводит строку текста в виде графического изображения. В точке  эта 

задача решается методом 

prep_msg()

. Код 

prep_msg()



 выглядит так:



Достарыңызбен бөлісу:
1   ...   143   144   145   146   147   148   149   150   ...   238




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

    Басты бет