Menu
CoddyTech

Selesaikan Gim Buatanmu

Termasuk bagian Proyek dalam perjalanan Pygame di Coddy. Pelajaran 31 dari 31.

Sekarang langkah 3 sampai 5: tantangan, akhir, dan teks. Rock Dodge menyimpan batu-batunya dalam list berisi Rect: batu baru setiap 400 ms, banyak batu sekaligus di layar.

rocks = []

# saat event timer NEW_ROCK terjadi:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

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

Baris terakhir adalah list comprehension: list baru yang hanya berisi batu-batu yang masih berada di layar, sehingga list tidak bertambah terus-menerus.

string state, "playing", "lost", atau "won", menentukan tindakan yang dilakukan setiap frame, seperti di Sky Runner. Dan pygame.time.get_ticks() memberikan jumlah milidetik sejak game dimulai, yang berfungsi sebagai timer: bertahan selama 20 detik untuk menang.

Game-mu dapat menggunakan semua hal dari perjalanan ini: sprite Group sebagai pengganti list, gambar, suara saat terkena benturan, musik, menu sebelum game dimulai, skor tertinggi, serta ruangan yang dibuat dari peta teks.

Buat game-mu sesuai keinginanmu: ubah warna, kecepatan, dan aturannya. Lalu mainkan. Jika terlalu sulit untuk menang atau terlalu cepat untuk kalah, ubah angkanya sampai game terasa menyenangkan.

challenge icon

Tantangan

Mudah

Selesaikan game-mu agar memiliki:

  1. Sesuatu yang bergerak sendiri.
  2. Teks di layar, seperti skor atau timer.
  3. Akhir permainan: cara untuk menang, cara untuk kalah, atau keduanya.

Pemeriksaan mencari teks, sesuatu yang bergerak tanpa tombol ditekan, game yang berjalan selama 30 detik tanpa error, dan jendela yang dapat ditutup. Selebihnya terserah kamu: bentuk atau gambar, suara, musik, state, dan peta semuanya bisa digunakan.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Proyek

Latihan sendiri: Playground Pygame