Dosięgnij celu
Lekcja 8 z 40 w kursie Twórz gry w Pygame w Coddy.
Gra potrzebuje celu. Narysuj zielony kwadrat w prawym dolnym rogu, a gdy kwadrat gracza znajdzie się w jego wnętrzu, gracz wygrywa.
Cel znajduje się w punkcie (420, 300) i ma wymiary 60 na 60. Kwadrat gracza znajduje się w jego wnętrzu, gdy jego lewa krawędź znajduje się na pozycji 420 lub dalej, a górna na pozycji 300 lub dalej. Oba warunki muszą być spełnione, więc połącz je za pomocą and.
Wygrana musi się utrzymywać. Przechowuj ją w zmiennej, której wartością początkową jest False i która może zmienić się tylko na True:
won = False
while running:
# przesuń kwadrat
if x >= 420 and y >= 300:
won = True
if won:
screen.fill((40, 110, 70))
else:
screen.fill((30, 30, 46))Gdy won ma wartość True, nic nie zmienia jej z powrotem, więc tło pozostaje zielone, nawet jeśli kwadrat opuści cel.
Wyzwanie
Łatwy- Przed pętlą ustaw
won = False. - Po ograniczeniu
xiyustawwon = True, gdyx >= 420iy >= 300. - Wypełnij ekran kolorem
(40, 110, 70), gdywonma wartość true, a w przeciwnym razie kolorem(30, 30, 46). - Przed narysowaniem kwadratu gracza narysuj cel: zielony
(60, 200, 120)w pozycji(420, 300, 60, 60).
Spróbuj swoich sił
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()
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Twórz gry w Pygame
Poćwicz samodzielnie: Edytor online Pygame