Grafika Komputer - Move Gambar Otomatis dan Keyboard - P8
- Menggerakkan Gambar secara Otomatis
- Menggerakkan Gambar dengan Keyboard
Contoh Gambar :
- Kelinci:

- Rumput:

- Wortel:

Move Gambar Otomatis
import pygame
import sys
pygame.init()
lebar_layar = 800
tinggi_layar = 600
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
pygame.display.set_caption("Gerakan Kelinci: Kanan → Turun → Kiri → Naik")
# Muat gambar
try:
gambar_pemain = pygame.image.load('kelinci.webp').convert_alpha()
gambar_pemain = pygame.transform.scale(gambar_pemain, (100, 100))
except pygame.error as e:
print("Error: Tidak dapat memuat gambar 'kelinci.webp'")
print(e)
sys.exit()
# posisi awal
x = 0
y = 0
# arah awal
arah = "kanan"
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
layar.fill((200, 200, 200))
# ==========================
# LOGIKA GERAK SESUAI INPUT
# ==========================
if arah == "kanan":
x += 1
if x >= 400:
arah = "turun" # pindah arah
elif arah == "turun":
y += 1
if y >= 500:
arah = "kiri"
elif arah == "kiri":
x -= 1
if x <= 0:
arah = "naik"
elif arah == "naik":
y -= 1
if y <= 0:
arah = "kanan" # kembali ke kanan → loop ulang
# gambar kelinci
layar.blit(gambar_pemain, (x, y))
pygame.display.flip()
clock.tick(60) # FPS biar tidak terlalu cepat
Move Gambar dengan Keyboard
import pygame
import sys
pygame.init()
lebar_layar = 800
tinggi_layar = 600
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
pygame.display.set_caption("Gerakan Kelinci Dengan Keyboard")
# Muat gambar
try:
gambar_pemain = pygame.image.load('kelinci.webp').convert_alpha()
gambar_pemain = pygame.transform.scale(gambar_pemain, (100, 100))
except pygame.error as e:
print("Error: Tidak dapat memuat gambar 'kelinci.webp'")
print(e)
sys.exit()
# posisi awal
x = 0
y = 0
kecepatan = 5
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# ==========================
# INPUT KEYBOARD
# ==========================
tombol = pygame.key.get_pressed()
if tombol[pygame.K_RIGHT]: # panah kanan
x += kecepatan
if tombol[pygame.K_LEFT]: # panah kiri
x -= kecepatan
if tombol[pygame.K_DOWN]: # panah bawah
y += kecepatan
if tombol[pygame.K_UP]: # panah atas
y -= kecepatan
# Batas layar (agar tidak keluar)
if x < 0:
x = 0
if x > lebar_layar - 100:
x = lebar_layar - 100
if y < 0:
y = 0
if y > tinggi_layar - 100:
y = tinggi_layar - 100
# ==========================
# GAMBARKAN
# ==========================
layar.fill((200, 200, 200))
layar.blit(gambar_pemain, (x, y))
pygame.display.flip()
clock.tick(60)
Move Dua Gambar (mini Game)
import pygame
import sys
import random
pygame.init()
# Ukuran layar
lebar_layar = 800
tinggi_layar = 600
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
pygame.display.set_caption("Mini Game: Kelinci Makan Wortel")
# ==============================
# LOAD GAMBAR KELINCI
# ==============================
try:
kelinci = pygame.image.load('kelinci.webp').convert_alpha()
kelinci = pygame.transform.scale(kelinci, (100, 100))
except pygame.error as e:
print("Error memuat kelinci.webp")
print(e)
sys.exit()
# ==============================
# LOAD GAMBAR WORTEL
# ==============================
try:
wortel = pygame.image.load('wortel.png').convert_alpha()
wortel = pygame.transform.scale(wortel, (70, 70))
except pygame.error as e:
print("Error memuat wortel.png")
print(e)
sys.exit()
# Posisi awal objek
x = 100
y = 100
# Posisi awal wortel (acak)
wortel_x = random.randint(0, lebar_layar - 70)
wortel_y = random.randint(0, tinggi_layar - 70)
kecepatan = 5
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# ==========================
# KONTROL KEYBOARD
# ==========================
tombol = pygame.key.get_pressed()
if tombol[pygame.K_RIGHT]:
x += kecepatan
if tombol[pygame.K_LEFT]:
x -= kecepatan
if tombol[pygame.K_DOWN]:
y += kecepatan
if tombol[pygame.K_UP]:
y -= kecepatan
# Batas layar
x = max(0, min(x, lebar_layar - 100))
y = max(0, min(y, tinggi_layar - 100))
# ==========================
# CEK TABRAKAN (Collision)
# ==========================
kelinci_rect = kelinci.get_rect(topleft=(x, y))
wortel_rect = wortel.get_rect(topleft=(wortel_x, wortel_y))
if kelinci_rect.colliderect(wortel_rect):
# Kelinci menyentuh wortel → pindahkan wortel ke posisi random
wortel_x = random.randint(0, lebar_layar - 70)
wortel_y = random.randint(0, tinggi_layar - 70)
# ==========================
# GAMBAR SEMUA OBJEK
# ==========================
layar.fill((230, 230, 230))
layar.blit(wortel, (wortel_x, wortel_y))
layar.blit(kelinci, (x, y))
pygame.display.flip()
clock.tick(60)