Счёт с помощью while
Часть раздела Python в игровом окне путешествия по Pygame на Coddy. Урок 19 из 32.
Цикл while повторяется, пока его условие истинно. Используй его, если заранее не знаешь, сколько раз нужно пройти цикл:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1Радиус каждый раз уменьшается вдвое: 200, 100, 50, 25, 12. // делит и отбрасывает дробную часть, поэтому 25 // 2 — это 12. Затем получается 6, условие становится ложным, и цикл завершается после 5 колец. Переменная rings считает их. Пятое число в вызове функции для рисования круга — 2 — задаёт контур шириной 2 пикселя вместо закрашенного круга.
Игровой цикл — это тоже цикл while, который выполняется, пока ты не закроешь окно. Цикл while внутри кадра должен быстро завершаться, иначе кадр так и не закончится. Убери строку, которая делит радиус пополам, и условие навсегда останется истинным: игра зависнет, а Check сообщит, что игра так и не достигла первого кадра.
Задание
СреднеВ части отрисовки замените одно кольцо циклом while:
- Начните с
radius = 200иrings = 0. - Пока
radius > 10: нарисуйте контурное кольцо цвета(150, 190, 255), шириной 2, с центром в точке (320, 240); разделите радиус пополам с помощью//; увеличьтеringsна 1. - После цикла выведите
f"Rings: {rings}"в точке (20, 20). На экране появитсяRings: 5.
Попробуйте сами
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Выполните настройку здесь, до начала игрового цикла.
font = pygame.font.Font(None, 36)
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, (150, 190, 255), (320, 240), 200, 2)
text = font.render("Rings: 1", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Python в игровом окне
4Циклы, которые рисуют
Повторение с forНачало, конец и шагИспользование переменной циклаЦикл внутри циклаСчёт с помощью whileПотренируйтесь самостоятельно: Песочница Pygame