Menu
CoddyTech

Hedefe Ulaş

Coddy'nin Pygame Journey'sinin Oyun Döngüsü bölümünün bir parçası. Ders 8 / 32.

Bir oyunun bir hedefi olmalıdır. Sağ alt köşeye yeşil bir kare çizin; oyuncunun karesi bu karenin içine girdiğinde oyuncu kazanır.

Hedef (420, 300) konumunda ve 60'a 60 boyutundadır. Oyuncunun karesi, sol kenarı 420 veya daha büyük ve üst kenarı 300 veya daha büyük olduğunda hedefin içindedir. İkisi de doğru olmalıdır, bu yüzden onları and ile birleştirin.

Kazanma durumu kalıcı olmalıdır. Bunu False ile başlayan ve yalnızca True değerine dönüşen 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 yeniden eski hâline döndürmez; bu nedenle kare hedeften çıksa bile arka plan yeşil kalır.

challenge icon

Görev

Kolay
  1. Döngüden önce won = False olarak ayarla.
  2. x ve y değerlerini sınırlandırdıktan sonra, x >= 420 ve y >= 300 olduğunda won = True olarak ayarla.
  3. won doğru olduğunda ekranı (40, 110, 70) ile, aksi hâlde (30, 30, 46) ile doldur.
  4. 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()
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Oyun Döngüsü bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground