Menu
CoddyTech

Достигните цели

Урок 8 из 41 курса Создавайте игры с Pygame на Coddy.

В игре должна быть цель. Нарисуй зелёный квадрат в правом нижнем углу, и когда квадрат игрока попадёт внутрь него, игрок победит.

Цель находится в точке (420, 300), её размер — 60 на 60. Квадрат игрока находится внутри неё, если его левая сторона находится на отметке 420 или дальше, а верхняя — на отметке 300 или дальше. Оба условия должны быть истинными, поэтому объедини их с помощью and.

Победа должна сохраняться. Запиши её в переменную, которая изначально равна False и впоследствии может стать только True:

won = False

while running:
    # переместить квадрат
    if x >= 420 and y >= 300:
        won = True
    if won:
        screen.fill((40, 110, 70))
    else:
        screen.fill((30, 30, 46))

Когда won становится равной True, ничто не возвращает ей прежнее значение, поэтому фон остаётся зелёным, даже если квадрат покидает цель.

challenge icon

Задание

Легко

Сделай экран зелёным, когда квадрат достигнет цели.

  1. Создай won = False перед циклом. Установи значение True, когда x >= 420 и y >= 300.
  2. Задай заливку (40, 110, 70), если won, иначе — (30, 30, 46).
  3. Перед квадратом нарисуй цель: (60, 200, 120) в точке (420, 300, 60, 60).

Нажми «Играть» и направь квадрат к цели: фон станет зелёным. Затем нажми «Проверить».

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

import pygame

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

x, y = 220, 160

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

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    x = max(0, min(x, 480 - 40))
    y = max(0, min(y, 360 - 40))

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Все уроки раздела Создавайте игры с Pygame

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