Повторение с 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): считает так же.
Задание
ЛегкоЗамените единственную звезду циклом 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 в игровом окне
4Циклы, которые рисуют
Повторение с forНачало, конец и шагИспользование переменной циклаЦикл внутри циклаСчёт с помощью whileПотренируйтесь самостоятельно: Песочница Pygame