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? Nah, rahasianya itu cuma satu: Variabel dan Logika Pemrograman yang cerdas.

Di Bab 1 ini, kita enggak cuma belajar bikin game di Scratch, tapi bikin game yang levelnya level up (naik kelas!). Kita akan bedah tuntas tiga elemen kunci yang wajib ada di setiap game serius: Skor, Level, dan Timer. Siap-siap, karena setelah ini, kamu bukan cuma pemain, tapi sudah jadi pencipta game yang keren!

Bagian 1: Variabel—Kantong Ajaib Penyimpan Data Game

Coba bayangkan variabel itu kayak "kantong penyimpanan informasi". Kantong ini bisa kita isi dengan angka (misalnya skor), kata (misalnya nama pemain), atau nilai benar/salah. Yang paling asik, isinya bisa kita ubah, ambil, atau bandingkan kapan saja saat game sedang berjalan.

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. Variabel Skor berfungsi untuk:

  • 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. Angka 10 bisa diganti sesukamu.

Studi Kasus Lanjut (Variabel Skor dan Logika): Misalnya, kita punya game "Ninja Semangka". Semangka kecil nilainya +5, semangka besar +10. Tapi, kalau pemain kena bom (musuh), skornya dikurangi 15.

Code snippet
// 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. Kalau dari awal sampai akhir gampang terus, ya bosen kan? Variabel Level inilah yang jadi penentu kesulitan game kamu.

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:

  1. Berdasarkan Skor: Kalau skor sudah mencapai target tertentu.

    • Contoh dari buku: if <(skor) > (100)> then change [level] by (1) end.

  2. 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", bintang harus jatuh lebih cepat saat Level 2.

Code snippet
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.

Code snippet
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 timer. Blok ini otomatis menghitung waktu sejak game dimulai. Kamu bisa reset nilainya kapan saja dengan blok reset timer.

Bagian 2: Operator—Otak Logika di Balik Game

Variabel itu kantongnya, nah Operator itu adalah otaknya. Operator ini yang memungkinkan game kamu bisa berpikir, menghitung, dan membuat keputusan otomatis.

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. Hasilnya cuma dua: BENAR atau SALAH (True atau False).

  • < (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. Ini vital untuk mengatur irama game.

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" jadi super detail dengan Word Count 1500+!

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:

  1. skor: Untuk menyimpan poin pemain.

  2. level: Untuk menyimpan tingkat kesulitan.

  3. 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.

Code snippet
// 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.

Code snippet
// 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.

Code snippet
// 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.

Code snippet
// 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. Kunci suksesnya adalah mencoba, menggabungkan semua blok itu, dan melihat bagaimana hasilnya! Selamat berkarya, pro

Comments

Popular posts from this blog

Soal Informatika Bab 1-5 ALyssa Kayla 03 8F SMP Labschool Jakarta

Maulid Nabi pada tanggal 19 September

Rangkuman Bab 2 – Analisis Data - Alyssa Kayla 8F