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



Pdf көрінісі
бет199/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   195   196   197   198   199   200   201   202   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
def _create_fleet(self):
...


276
Глава 13 • Осторожно, пришельцы!
alien = Alien(self)

alien_width, alien_height = alien.rect.size
available_space_x = self.settings.screen_width - (2 * alien_width)
number_aliens_x = available_space_x // (2 * alien_width)
"""Определяет количество рядов, помещающихся на экране."""
ship_height = self.ship.rect.height

available_space_y = (self.settings.screen_height -
(3 * alien_height) - ship_height)
number_rows = available_space_y // (2 * alien_height)
# Создание флота вторжения.

for row_number in range(number_rows):
for alien_number in range(number_aliens_x):
self._create_alien(alien_number, row_number)
def _create_alien(self, alien_number, row_number):
"""Создание пришельца и размещение его в ряду."""
alien = Alien(self)
alien_width, alien_height = alien.rect.size
alien.x = alien_width + 2 * alien_width * alien_number
alien.rect.x = alien.x

alien.rect.y = alien.rect.height + 2 * alien.rect.height * row_number
self.aliens.add(alien)
Для дальнейших вычислений понадобятся значения ширины и высоты пришельца, 
поэтому в точке 

используется атрибут 
size
, который содержит кортеж с шири-
ной и высотой объекта 
rect
. Чтобы вычислить количество рядов, помещающихся 
на экране, мы включаем вычисление 
available_space_y
сразу же после вычис-
ления 
available_space_x

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

. Внутренний цикл создает один ряд пришельцев. Внешний цикл 
считает от 0 до количества рядов; Python использует код создания одного ряда 
и повторяет его 
number_rows
раз.
Чтобы создать вложенный цикл, напишите новый цикл 
for
и снабдите повторя-
емый код отступом. (В большинстве текстовых редакторов операции создания 
и удаления блоков кода выполняются просто, но если вам понадобится помощь, 
обращайтесь к приложению Б.) Затем при вызове 
_create_alien()
передается ар-
гумент с номером ряда, чтобы каждый ряд находился на экране ниже предыдущих.
Определению 
_create_alien()
необходим параметр с номером ряда. В 
_create_
alien()
мы изменяем координату y пришельца, если он не находится в первом 
ряду 

. Сначала прибавляется одна высота пришельца, чтобы создать пустое место 
у верхнего края экрана. Каждый новый ряд начинается на две высоты пришельца 
ниже последнего ряда, поэтому мы умножаем высоту пришельца на 2, а затем на но-
мер ряда. Номер первого ряда равен 0, так что вертикальное расположение первого 
ряда остается неизменным. Все последующие ряды размещаются ниже на экране.


Перемещение флота


Достарыңызбен бөлісу:
1   ...   195   196   197   198   199   200   201   202   ...   334




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

    Басты бет