Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Kare hedefe ulaştığında ekranı yeşile çevir.

  1. Döngüden önce won = False oluştur. x >= 420 ve y >= 300 olduğunda bunu True olarak ayarla.
  2. won olduğunda (40, 110, 70), aksi hâlde (30, 30, 46) ile doldur.
  3. 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