Hedefe Ulaş
Coddy'nin Pygame ile Oyun Yap kursunda ders 8 / 40.
Bir oyunun bir hedefi olmalıdır. Sağ alt köşeye yeşil bir kare çizin ve oyuncunun karesi bunun içine girdiğinde oyuncu kazansın.
Hedef (420, 300) konumunda ve 60'a 60 boyutundadır. Oyuncunun karesi, sol tarafı 420 veya daha büyük ve üst tarafı 300 veya daha büyük olduğunda hedefin içindedir. Her ikisi de doğru olmalıdır; bu yüzden bunları and ile birleştirin.
Kazanma durumu kalıcı olmalıdır. Bunu False ile başlayan ve yalnızca True olan bir değişkende tutun:
won = False
while running:
# kareyi hareket ettir
if x >= 420 and y >= 300:
won = True
if won:
screen.fill((40, 110, 70))
else:
screen.fill((30, 30, 46))won bir kez True olduğunda, hiçbir şey onu tekrar geri almaz; bu nedenle kare hedeften çıksa bile arka plan yeşil kalır.
Görev
Kolay- Döngüden önce
won = Falseolarak ayarla. xveydeğerlerini sınırlandırdıktan sonra,x >= 420vey >= 300olduğundawon = Trueolarak ayarla.wondoğruysa ekranı(40, 110, 70)ile, değilse(30, 30, 46)ile doldur.- Oyuncunun karesinden önce hedefi çiz:
(420, 300, 60, 60)konumunda yeşil(60, 200, 120).
Kendin dene
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()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Pygame ile Oyun Yap bölümündeki tüm dersler
Kendi başına pratik yap: Pygame playground