Menu
CoddyTech

Вызываем много раз

Часть раздела Python в игровом окне путешествия по Pygame на Coddy. Урок 23 из 32.

Вызови функцию в цикле, и она нарисует узор. Цикл вычисляет аргументы, а функция выполняет рисование:

for i in range(8):
    draw_star(60 + i * 70, 60 + i * 45)

Каждый проход цикла находится на 70 пикселей правее предыдущего и на 45 пикселей ниже, поэтому звёзды выстраиваются в линию от (60, 60) до (550, 375). Измени 70 или 45, и положение каждой звезды изменится.

Вот почему функции стоит писать. Строки, рисующие звезду, существуют в одном экземпляре. Чтобы изменить вид всех звёзд — например, сделать лучи длиннее или выбрать другой цвет, — измени тело функции, и каждый вызов будет рисовать новую звезду.

Называй функцию по тому, что она делает, часто используя глагол: draw_star, move_comet, reset_game. Тогда строка, которая её вызывает, читается как предложение.

challenge icon

Задание

Легко

Нарисуй линию из звёзд: замени единственный вызов циклом for i in range(8):, вызывающим draw_star(60 + i * 70, 60 + i * 45). 8 звёзд располагаются от (60, 60) до (550, 375).

Попробуйте сами

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Настройте всё здесь, до начала игрового цикла.
def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Изменяйте всё здесь один раз за кадр.

    screen.fill((20, 24, 48))
    # Рисуйте здесь, после заливки фона.
    draw_star(60, 60)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Python в игровом окне

Потренируйтесь самостоятельно: Песочница Pygame