Bedah Kode Pygame
Proyek 1: Catch the Apple — Logika Dasar Mini-Game 2D
Menginisialisasi pustaka Pygame dan mengatur kanvas (layar) tempat game berjalan.
import pygame, random, sys
pygame.init() # Menyalakan mesin Pygame
window = pygame.display.set_mode((500, 600)) # Kanvas 500x600 px
pygame.display.set_caption("Catch the Apple")
clock = pygame.time.Clock() # Pengatur stabilitas waktu
Membuat wujud nyata objek (keranjang dan apel) menggunakan cetak biru pygame.Rect.
# Format: Rect(Posisi X, Posisi Y, Lebar, Tinggi)
player = pygame.Rect(200, 500, 100, 20) # Keranjang
# X diacak, Y diletakkan di -50 (luar layar atas)
apple = pygame.Rect(random.randint(0, 450), -50, 30, 30)
score = 0
Loop tanpa batas yang menahan agar program tidak tertutup, dan mendengarkan event user.
running = True
while running:
for event in pygame.event.get():
# Jika tombol silang (X) di pojok jendela ditekan
if event.type == pygame.QUIT:
running = False
Membaca tekanan keyboard (kiri/kanan) dan memberlakukan dinding virtual (*screen boundary*).
keys = pygame.key.get_pressed()
# Syarat gerak kiri: sisi kiri belum menabrak batas 0
if keys[pygame.K_LEFT] and player.left > 0:
player.x -= 7
# Syarat gerak kanan: sisi kanan belum menabrak batas 500
if keys[pygame.K_RIGHT] and player.right < 500:
player.x += 7
Menerapkan simulasi gaya jatuh (gravitasi) dan penalti jika apel terlewat.
apple.y += 5 # Apel turun terus-menerus sebesar 5px
if apple.y > 600: # Jika apel jatuh melewati batas bawah layar
apple.y = -50 # Kembalikan ke atas layar
apple.x = random.randint(0, 450) # Acak posisi horizontalnya
score -= 1 # Hukuman pengurangan skor
Mengevaluasi intersepsi (perpotongan) antara koordinat keranjang dan koordinat apel.
# Fungsi otomatis pendeteksi tabrakan kotak
if player.colliderect(apple):
score += 10
apple.y = -50 # Reset vertikal
apple.x = random.randint(0, 450) # Reset horizontal
Prosedur visualisasi yang dilakukan berurutan (dari latar belakang hingga objek paling depan).
window.fill((30, 30, 30)) # 1. Bersihkan layar agar tidak membekas
pygame.draw.rect(window, (0, 150, 255), player) # 2. Gambar Player
pygame.draw.rect(window, (255, 50, 50), apple) # 3. Gambar Apel
# Merender Surface untuk Teks Skor
font = pygame.font.SysFont(None, 36)
score_text = font.render(f"Skor: {score}", True, (255, 255, 255))
window.blit(score_text, (10, 10)) # Tempel teks di pojok kiri atas
Tahap final dalam satu siklus iterasi frame, dan prosedur mematikan mesin game.
pygame.display.update() # Munculkan gambar ke monitor pemain
clock.tick(60) # Batasi eksekusi loop maksimal 60 kali sedetik
# Dieksekusi hanya jika loop 'while' sudah selesai (user keluar)
pygame.quit()
sys.exit()