Menu
CoddyTech

Случайные падения

Часть раздела Игровой цикл путешествия по Pygame на Coddy. Урок 25 из 32.

Когда блок падает ниже нижнего края, помести его обратно над верхним краем, чтобы он падал снова. Его верхний край оказывается ниже нижнего, когда block.top > 360.

Чтобы сделать игру менее предсказуемой, сбрасывай блок в случайное место. Модуль random в Python выбирает числа: random.randint(0, 460) — это целое число от 0 до 460 включительно.

import random

if block.top > 360:
    block.y = -20
    block.x = random.randint(0, 460)

Почему 460? Ширина блока — 20, поэтому x, равный 460, помещает его правый край у границы окна. А y = -20 помещает его прямо над окном, поэтому он появляется сверху.

challenge icon

Задание

Легко
  1. Добавь import random в начало.
  2. После падения блока, когда block.top > 360, установи block.y = -20, а block.x — в random.randint(0, 460).

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

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Все уроки раздела Игровой цикл

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