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.
Tantangan
MudahSelesaikan game-mu agar memiliki:
- Sesuatu yang bergerak sendiri.
- Teks di layar, seperti skor atau timer.
- 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()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
Latihan sendiri: Playground Pygame