Menu
CoddyTech

Повторение с for

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

Цикл for повторяет строки кода один раз для каждого переданного ему значения:

for i in range(8):
    pygame.draw.circle(screen, (255, 255, 255), (40 + i * 80, 80), 5)

range(8) выдаёт числа 0, 1, 2 и так далее до 7: всего восемь чисел, начиная с 0 и заканчивая перед 8. Цикл по очереди сохраняет каждое из них в i и выполняет строки с отступом. Поэтому первая звезда находится на x 40, следующая — на 120, затем на 200 и так далее до 600.

Строки с отступом — это тело цикла, как и в случае с if. Первая строка после тела, на уровне внешнего отступа, выполняется, когда цикл завершён.

Этот цикл находится в части отрисовки игрового цикла, поэтому все восемь звёзд заново рисуются на каждом кадре. Он короткий и выполняется мгновенно, поэтому кадр по-прежнему завершается вовремя.

i — распространённое имя для счётной переменной, но подойдёт любое имя: for n in range(8): считает так же.

challenge icon

Задание

Легко

Замените единственную звезду циклом for по range(8), который рисует 8 белых звёзд радиусом 5 в точке (40 + i * 80, 80).

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

import pygame

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

# Настройте всё здесь, до начала игрового цикла.

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

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

    screen.fill((20, 24, 48))
    # Рисуйте здесь после заливки.
    pygame.draw.circle(screen, (255, 255, 255), (40, 80), 5)

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

pygame.quit()

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

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