Artikel Bab 1-Buku AI SMP-Alyssa Kayla
BAB 1: ARTIKEL PENGEMBANGAN GAME SCRATCH LANJUTAN (LEVEL, SKOR, TIMER)
Filosofi Game Keren: Rahasia di Balik Level, Skor, dan Timer
Pernah enggak sih kamu main game kayak Subway Surfers atau Candy Crush dan penasaran, kok bisa ya levelnya naik, skornya nambah, dan ada waktu hitung mundur yang bikin deg-degan?
Di Bab 1 ini, kita enggak cuma belajar bikin game di Scratch, tapi bikin game yang levelnya level up (naik kelas!)
Bagian 1: Variabel—Kantong Ajaib Penyimpan Data Game
Coba bayangkan variabel itu kayak "kantong penyimpanan informasi"
1.1 Variabel Skor: Mengukur Kerennya Pemain
Skor itu penting banget, bro! Tanpa skor, kita enggak tahu siapa yang menang dan seberapa jago kita main
Menyimpan poin yang didapat pemain
. Menambah atau mengurangi poin berdasarkan aksi pemain
.
Implementasi Praktis di Scratch (Blok Wajib):
set [skor] to (0): Ini dipakai di awal game. Skor harus di-reset ke nol biar adil. change [skor] by (10): Ini dipakai saat pemain melakukan hal yang benar, misalnya menangkap koin atau mengalahkan musuh. Angka10bisa diganti sesukamu.
Studi Kasus Lanjut (Variabel Skor dan Logika):
Misalnya, kita punya game "Ninja Semangka"
// LOGIKA SKOR SEMANGKA KECIL
when this sprite clicked {
change [skor] by (5)
play sound "potong"
}
// LOGIKA SKOR BOM
when I receive [Kena_Bom] {
change [skor] by (-15) // Skor dikurangi
if <(skor) < (0)> then {
set [skor] to (0) // Biar skor tidak minus, tergantung aturan game
}
play sound "DOR"
}
Tips Keren: Mau bikin High Score? Kamu perlu menyimpan skor tertinggi dalam variabel cloud (variabel yang nilainya tersimpan di server Scratch, jadi enggak hilang walaupun game dimatikan). Variabel skor kita akan selalu dibandingkan dengan variabel High Score. Kalau skor lebih besar, maka High Score di-update!
1.2 Variabel Level: Biar Game Enggak Cepat Bosen
Game yang seru itu tantangannya harus naik
Fungsi Level:
Menyimpan tingkat kesulitan atau tahap game
. Mengontrol kecepatan musuh, jenis rintangan, atau bahkan musik latar
.
Mekanisme Naik Level (Level Up):
Kapan level naik? Ada dua cara umum:
Berdasarkan Skor: Kalau skor sudah mencapai target tertentu.
Contoh dari buku:
if <(skor) > (100)> then change [level] by (1) end.
Berdasarkan Selesainya Misi: Kalau pemain sudah melewati rintangan tertentu (misalnya berhasil mengumpulkan 10 kunci atau mencapai pintu keluar)
.
Contoh Logic Level yang Mempengaruhi Kecepatan:
Anggaplah di game "Tangkap Bintang, Hindari Batu"
set [Level] to (1) // Level awal
// LOGIKA DI SPRITE BINTANG/BATU
forever {
move (10) steps // Kecepatan dasar
if <(Level) = (2)> then {
move (5) steps // Tambah kecepatan +5 jika Level 2
}
if <(Level) = (3)> then {
move (10) steps // Tambah kecepatan +10 jika Level 3
}
}
Logika di atas itu sangat penting. Level menentukan seberapa parah rintangan yang akan dihadapi.
1.3 Variabel Timer: Bikin Main Jadi Tegang!
Coba bayangin, game balapan tanpa waktu? Enggak seru! Timer atau pengatur waktu itu memberikan tekanan, bikin permainan jadi lebih seru
Fungsi Timer:
Mengukur waktu bermain (hitung naik)
. Menentukan kapan game over (hitung mundur)
.
Contoh Hitung Mundur (Countdown):
Ini adalah skema standar untuk bikin waktu mundur sampai habis, seperti yang dijelaskan di buku
set [Sisa Waktu] to (60) // Mulai dari 60 detik
repeat until <(Sisa Waktu) = (0)> { // Ulangi sampai waktunya nol
wait (1) seconds // Tunggu 1 detik
change [Sisa Waktu] by (-1) // Kurangi 1 detik
}
broadcast [Game Over] // Kirim pesan Game Over
Blok Bawaan Scratch: Selain membuat variabel timer sendiri, kamu bisa pakai blok bawaan Scratch bernama timerreset timer.
Bagian 2: Operator—Otak Logika di Balik Game
Variabel itu kantongnya, nah Operator itu adalah otaknya
2.1 Operator Aritmatika (Matematika)
Ini yang paling dasar. Dipakai untuk menghitung skor, kecepatan objek, atau posisi
+(Tambah),-(Kurang),*(Kali),/(Bagi). Contoh: Menghitung total skor:
(skor) + (bonus). Menghitung kecepatan rintangan berdasarkan level:(kecepatan_dasar) * (level).
2.2 Operator Perbandingan (Comparison)
Ini dipakai untuk membuat syarat atau membandingkan dua nilai
<(Kurang dari),>(Lebih dari),=(Sama dengan). Contoh Inti (Level Up):
if <(skor) > (100)> then // naik level.
2.3 Operator Logika
Ini jurus pamungkas untuk menggabungkan dua atau lebih syarat
and(dan): Keduanya harus BENAR.Contoh:
if <<(level) = (2)> and <(sisa waktu) > (0)>> then // lanjut main. Artinya, kamu bisa lanjut main HANYA JIKA levelnya sudah 2 DAN sisa waktunya masih ada. Kalau salah satu salah, ya enggak bisa.
or(atau): Salah satu harus BENAR.Contoh:
if <<(kunci_terkumpul) = (5)> or <(Health) = (0)>> then // Game berakhir. Artinya, game berakhir kalau kamu sudah dapat 5 kunci ATAU Health kamu habis.
not(bukan): Membalikkan nilai.Contoh:
if <not <(kucing) touching (dinding)>> then // Kucing bergerak
Bagian 3: Flow Control—Mengatur Alur Waktu Game
Flow control (Kontrol Alur) adalah blok yang mengatur kapan dan bagaimana suatu aksi terjadi
3.1 Blok Perulangan (Loops)
forever: Ulangi terus-menerus selama game berjalan. Ini dipakai untuk hal-hal yang harus dicek terus, misalnya: apakah karakter menyentuh musuh? Apakah skor sudah mencapai target? repeat until <kondisi>: Ulangi sampai suatu kondisi BENAR. Ini dipakai untuk timer mundur atau pergerakan objek sampai mencapai lokasi tertentu. repeat (angka): Ulangi aksi sebanyak hitungan tertentu (misalnya, membuat karakter berkedip 5 kali).
3.2 Blok Waktu
wait (detik): Memberi jeda sebelum aksi selanjutnya. Penting untuk mengatur kecepatan animasi atau interval waktu munculnya musuh.
Bagian 4: Studi Kasus Mendalam (Level Up Game!)
Oke, sekarang kita langsung praktik ke studi kasus yang ada di buku. Kita akan buat game "Tangkap Bintang, Hindari Batu"
Kasus 2: Tangkap Bintang, Hindari Batu
Ide: Kucing lucu tangkap bintang (+5), hindari batu (-2).
Waktu: 30 detik
. Level Up: Jika Skor mencapai 50, Level 2 (bintang jatuh lebih cepat!)
.
4.1 Persiapan Variabel (The Inventory)
Kita butuh 3 variabel:
skor: Untuk menyimpan poin pemain.level: Untuk menyimpan tingkat kesulitan.sisa_waktu: Untuk hitung mundur 30 detik.
4.2 Logika Utama (The Engine)
Logika ini ada di backdrop (latar belakang) atau sprite utama (kucing). Ini adalah logika yang mengatur kapan game mulai dan berakhir.
// LOGIKA AWAL GAME (Di Sprite Kucing/Backdrop)
when green flag clicked {
// 1. Inisialisasi (Atur Nilai Awal)
set [skor] to (0)
set [level] to (1)
set [sisa_waktu] to (30)
// 2. Logika Timer (Kontrol Waktu)
start new thread [Countdown Timer] // Jalankan Timer di background
// 3. Logika Utama Game (Perulangan Game)
forever {
// Cek Kondisi Level Up
if <<(skor) > (50)> and <(level) = (1)>> then {
change [level] by (1)
say "LEVEL UP! Bintang Lebih Cepat!" for (2) seconds
// Broadcast pesan agar sprite Bintang & Batu tahu
broadcast [Naik Level]
}
// Cek Kondisi Game Over (Opsional)
if <(sisa_waktu) = (0)> then {
broadcast [Game Over]
stop (all) // Hentikan semua script
}
}
}
4.3 Logika Countdown Timer (The Clock)
Logika ini berjalan sendiri dan bertanggung jawab untuk memastikan waktu mundur berjalan setiap detik, sampai nol. Ini harus dipisahkan dari logika utama agar tidak mengganggu aksi kucing.
// LOGIKA TIMER (Di Sprite Kucing/Backdrop)
when I receive [Countdown Timer] {
repeat until <(sisa_waktu) = (0)> {
wait (1) seconds
change [sisa_waktu] by (-1)
}
}
4.4 Logika Sprite Bintang (The Reward)
Bintang harus memiliki logika yang menyesuaikan kecepatan jatuhnya berdasarkan variabel level.
// LOGIKA BINTANG (Jatuh dan Diambil)
when green flag clicked {
forever {
// Atur kecepatan berdasarkan Level
set [kecepatan_jatuh] to (5) // Kecepatan dasar
if <(level) > (1)> then { // Jika Level > 1 (yaitu Level 2 ke atas)
set [kecepatan_jatuh] to ((kecepatan_jatuh) + ((level) * (2))) // Kecepatan naik 2 poin per Level
}
// Gerak jatuh
change y by ((kecepatan_jatuh) * (-1)) // y bergerak negatif (jatuh ke bawah)
// Cek Kena Kucing
if <touching (Kucing)> then {
change [skor] by (5) // Tambah skor
play sound "poin"
go to random position // Bintang muncul lagi di tempat acak
}
// Cek Jatuh ke Tanah (Terlewat)
if <(y position) < (-160)> then { // Jika sudah di bawah panggung
go to random position // Bintang muncul lagi
// Tidak ada pengurangan skor, hanya kehilangan kesempatan
}
wait (0.1) seconds // Kontrol agar tidak terlalu cepat
}
}
4.5 Logika Sprite Batu (The Penalty)
Batu (Rintangan) harus memiliki logika yang serupa dengan Bintang, tetapi dengan pengurangan skor/Health (jika ada Health) dan mungkin memiliki kecepatan yang lebih tinggi. Di kasus ini, Batu mengurangi skor
// LOGIKA BATU (Jatuh dan Menghukum)
when green flag clicked {
forever {
// Kecepatan Batu selalu sedikit lebih cepat dari Bintang
set [kecepatan_jatuh_batu] to (7)
if <(level) > (1)> then {
set [kecepatan_jatuh_batu] to ((kecepatan_jatuh_batu) + ((level) * (3))) // Naik 3 poin per Level
}
// Gerak jatuh
change y by ((kecepatan_jatuh_batu) * (-1))
// Cek Kena Kucing
if <touching (Kucing)> then {
change [skor] by (-2) // KURANGI SKOR
play sound "ouch"
go to random position // Batu muncul lagi di tempat acak
}
// Cek Jatuh ke Tanah
if <(y position) < (-160)> then {
go to random position
}
wait (0.1) seconds
}
}
Penutup Bab 1: Siap Menciptakan Game Luar Biasa
Gimana? Kelihatan kan, kalau game keren itu bukan cuma tentang gambar yang bagus, tapi tentang logika yang matang
Dengan menguasai variabel (skor, level, timer), operator (matematika dan logika), serta kontrol alur (if, forever, wait), kamu sudah punya bekal super penting buat bikin game yang hidup, menantang, dan bikin ketagihan
Comments
Post a Comment