Hedefe Ulaş
Coddy'nin Pygame ile Oyun Yap kursunda ders 8 / 41.
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
KolayKare hedefe ulaştığında ekranı yeşile çevir.
- Döngüden önce
won = Falseoluştur.x >= 420vey >= 300olduğunda bunuTrueolarak ayarla. wonolduğunda(40, 110, 70), aksi hâlde(30, 30, 46)ile doldur.- Kareden önce hedefi çiz:
(420, 300, 60, 60)konumunda(60, 200, 120).
“Oyna” düğmesine bas ve hedefe doğru ilerle: arka plan yeşile döner. Ardından “Kontrol et” düğmesine bas.
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()
Pygame ile Oyun Yap bölümündeki tüm dersler
Kendi başına pratik yap: Pygame playground