Menu
CoddyTech

Oyunu Tamamla

Coddy'nin Pygame ile Oyun Yap kursunda ders 40 / 40.

Şimdi 3. adımdan 5. adıma geçelim: bir meydan okuma, bir bitiş ve metin. Rock Dodge, henüz görmediğin bir fikir kullanıyor: Rect listesi; her 400 ms'de yeni bir kaya ve ekranda aynı anda birçok kaya.

rocks = []

# bir NEW_ROCK zamanlayıcı olayı gerçekleştiğinde:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# her karede:
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

Son satır bir liste kavrayışıdır: yalnızca hâlâ ekranda olan kayaları içeren yeni bir liste oluşturur; böylece liste sonsuza kadar büyümez.

Bir state dizgesi olan "playing", "lost" veya "won", birkaç bayrağın yerini alır. Ayrıca pygame.time.get_ticks(), oyun başladığından beri geçen milisaniyeleri verir; böylece bir zamanlayıcı oluşturur: kazanmak için 20 saniye boyunca hayatta kal.

Oyunun sana özgü olsun: renkleri, hızları ve kuralları değiştir. Sonra oyna. Kazanmak çok zorsa veya kaybetmek çok çabuk oluyorsa, eğlenceli olana kadar sayıları değiştir.

challenge icon

Görev

Kolay

Oyununuzu şu özelliklere sahip olacak şekilde tamamlayın:

  1. Kendi kendine hareket eden bir şey.
  2. Ekranda bir puan veya zamanlayıcı gibi metinler.
  3. Bir bitiş: kazanma yolu, kaybetme yolu veya her ikisi.

Kontroller; metin olup olmadığını, herhangi bir tuşa basılı değilken hareket eden bir şey bulunup bulunmadığını, oyunun hata vermeden 30 saniye çalışıp çalışmadığını ve pencerenin kapanıp kapanmadığını denetler. Diğer her şey size kalmış.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 20)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player.x -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), player)
    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.

Pygame ile Oyun Yap bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground