Bedah Kode Scratch
Materi ini membahas cara membangun game side-scrolling di Scratch dengan logika yang mudah diikuti dan bisa dipraktikkan langsung.
Materi ini membahas cara membangun game side-scrolling di Scratch dengan logika yang mudah diikuti dan bisa dipraktikkan langsung.
Tujuan utama proyek ini adalah memperkenalkan simulasi fisika, obstacle acak, collision detection, scoring system, dan pengelolaan state game.
Tujuan: Introduce physics simulation, random obstacles, collision detection, scoring system
Durasi: 3-4 jam (split 4 pertemuan)
Level: Intermediate
Prerequisite: Movement, events, basic variables
Fokus pembelajaran dibagi ke beberapa kemampuan inti yang saling terhubung.
[ ] Implement gravity & physics
[ ] Random obstacle generation
[ ] Collision detection
[ ] Variable scoring system
[ ] Game state management (play/game over)
Scratch memakai sistem koordinat dengan titik tengah di layar. Burung akan bergerak pada zona terbang, lalu turun ke ground jika tidak dikendalikan.
Y = 180 # TOP
Y = 0 # CENTER
Y = -180 # BOTTOM / FLOOR
Higher Y = bird naik
Lower Y = bird turun
Collision at Y < -180 = floor hit
Burung jatuh otomatis karena velocity terus dipengaruhi gravitasi. Ini adalah inti dari simulasi fisika sederhana.
gravity = -0.5
Each frame:
velocity = velocity + gravity
y = y + velocity
Semakin lama tidak ditekan, velocity menjadi semakin negatif dan burung jatuh lebih cepat.
Saat pemain menekan SPACE atau klik sprite, velocity langsung diubah menjadi positif agar burung meloncat ke atas.
WHEN [SPACE] PRESSED
set velocity to 8
play sound [wing.mp3]
Setelah itu gravitasi akan menarik burung turun lagi secara bertahap.
Pipa dibuat sebagai clone dan muncul dari sisi kanan layar secara berkala. Posisi vertikalnya diacak supaya setiap ronde terasa berbeda.
Clone pipe sprite every (2) seconds
Each clone:
x = 240
y = random(-80 to 80)
move left smoothly (-3 steps per frame)
delete clone when x < -50
Jika burung menyentuh pipa atau ground, game berakhir. Jika berhasil melewati pusat pipa, skor bertambah.
IF bird touching [pipe]
OR bird touching [ground]
OR bird.y < 0
THEN set game_over to [true]
WHEN bird passes pipe center (x = 0)
change score by (1)
play sound [ding.mp3]
Variabel game_over dipakai untuk memisahkan mode bermain dan mode kalah. Ini membantu game tetap rapi dan mudah dikembangkan.
if game_over = false:
# mode bermain aktif
else:
# tampilkan game over screen
# tunggu restart