DC
Kelas Digital Creative
Robotika · IoT · Scratch · Canva · CapCut · AI
← kembali ke Home

Membuat Math Game: Mengecek Jawaban dan Menghitung Skor

⏱ 30 Menit Scratch August 2026 🔧 Scratch Website

Melanjutkan Math Game sebelumnya, kini kita akan memeriksa apakah jawaban pemain benar atau salah, serta menghitung dan menampilkan skor akhir. Bagian ini agak kompleks karena melibatkan beberapa variabel yang saling terhubung, jadi ikuti setiap langkah dengan cermat.

Masalah Utama: Angka Acak yang “Hilang”

Soal seperti “What is 2 plus 3?” dibuat menggunakan pick random, namun begitu ditampilkan, nilai acak tersebut langsung hilang dan tidak bisa dipanggil lagi untuk menghitung jawaban yang benar. Solusinya: simpan setiap angka acak ke dalam variabel sebelum digunakan, agar bisa dipakai kembali nanti untuk verifikasi.

Langkah 1: Membuat Variabel Number1 dan Number2

Buat dua variabel baru: Number1 dan Number2. Alih-alih langsung menampilkan pick random di dalam soal, simpan dulu nilainya:

when I receive [question]
set [Question] to (answer)
repeat (Question)
    set [Number1] to (pick random 1 to 10)
    set [Number2] to (pick random 1 to 10)
    if <(Choice) = 1> then
        ask (join (join (join "What is" (Number1)) "plus") (Number2)) and wait
        broadcast [plus] and wait
    else
        ask (join (join (join "What is" (Number1)) "multiply by") (Number2)) and wait
        broadcast [multiply] and wait

Dengan menyimpan angka ke Number1 dan Number2 terlebih dahulu, nilai tersebut tetap tersedia untuk dipakai memeriksa jawaban nanti, meskipun soal sudah ditampilkan di layar. Perhatikan juga broadcast _ and wait digunakan (bukan broadcast biasa) agar proses pengecekan jawaban benar-benar selesai sebelum melanjutkan ke pengulangan berikutnya.

Langkah 2: Menyimpan Total Jumlah Soal

Karena blok answer akan berubah nilai setiap kali pemain menjawab soal (menimpa jumlah soal yang diminta di awal), buat variabel baru Question untuk menyimpan jumlah total soal secara permanen (seperti terlihat pada skrip di atas: set Question to (answer) dilakukan tepat setelah menerima jumlah soal, sebelum nilainya berubah lagi).

Langkah 3: Memeriksa Jawaban Penjumlahan

when I receive [plus]
if <(answer) = ((Number1) + (Number2))> then
    change [Score] by 1
    say "Correct answer" for 3 seconds
else
    say "Incorrect answer" for 3 seconds

Skrip ini membandingkan jawaban pemain (answer) dengan hasil sebenarnya, yaitu Number1 + Number2 (dihitung menggunakan operator +). Jika sama, skor bertambah 1 dan pesan “Correct answer” ditampilkan; jika tidak, pesan “Incorrect answer” yang muncul.

Langkah 4: Memeriksa Jawaban Perkalian

when I receive [multiply]
if <(answer) = ((Number1) × (Number2))> then
    change [Score] by 1
    say "Correct answer" for 3 seconds
else
    say "Incorrect answer" for 3 seconds

Logikanya sama persis dengan penjumlahan, hanya operatornya diganti menjadi × (perkalian).

Tips: beri komentar pada masing-masing skrip (klik kanan pada blok → Add Comment) seperti “Checking answer for addition” dan “Checking answer for multiplication” agar kode lebih mudah dipahami saat dibaca ulang nanti.

Langkah 5: Menginisialisasi Skor ke 0

Tambahkan set Score to 0 di titik awal permainan (skrip yang menerima pesan start), agar skor selalu mulai dari 0 setiap kali permainan dimulai ulang.

Langkah 6: Menampilkan Skor Akhir

Di akhir loop repeat (setelah semua soal selesai dijawab), tambahkan blok untuk menampilkan hasil akhir:

say (join (join (join "Your score is" (Score)) "/") (Question)) for 3 seconds

Sama seperti menyusun soal, teks skor akhir juga disusun menggunakan join bertingkat, menggabungkan teks “Your score is”, nilai Score, tanda “/”, dan nilai Question (total soal) — menghasilkan tampilan seperti “Your score is 2/3”.

Skrip Lengkap Math Game

when [green flag] clicked
broadcast [start]

when I receive [start]
set [Score] to 0
ask "What's your name? Press 1 for Add. Press 2 for Multiply." and wait
set [Choice] to (answer)
if <<(Choice) = 1> or <(Choice) = 2>> then
    ask "How many questions do you want?" and wait
    set [Question] to (answer)
    broadcast [question]
else
    say "Incorrect choice" for 2 seconds
    broadcast [start]

when I receive [question]
repeat (Question)
    set [Number1] to (pick random 1 to 10)
    set [Number2] to (pick random 1 to 10)
    if <(Choice) = 1> then
        ask (join (join (join "What is" (Number1)) "plus") (Number2)) and wait
        broadcast [plus] and wait
    else
        ask (join (join (join "What is" (Number1)) "multiply by") (Number2)) and wait
        broadcast [multiply] and wait
say (join (join (join "Your score is" (Score)) "/") (Question)) for 3 seconds

when I receive [plus]
if <(answer) = ((Number1) + (Number2))> then
    change [Score] by 1
    say "Correct answer" for 3 seconds
else
    say "Incorrect answer" for 3 seconds

when I receive [multiply]
if <(answer) = ((Number1) × (Number2))> then
    change [Score] by 1
    say "Correct answer" for 3 seconds
else
    say "Incorrect answer" for 3 seconds

Ringkasan

Logika inti Math Game ini menunjukkan konsep penting: nilai sementara (seperti hasil pick random atau answer) harus disimpan ke variabel jika masih dibutuhkan nanti, karena nilai-nilai tersebut akan tertimpa atau hilang begitu event berikutnya dijalankan. Kombinasi broadcast ... and wait, repeat, variabel penyimpan (Number1, Number2, Choice, Question), dan join bertingkat menjadi fondasi utama game kuis ini.

Selanjutnya

Pada tutorial berikutnya, kita akan menambahkan tombol Restart agar pemain bisa memulai ulang permainan dengan mudah tanpa perlu mengklik green flag lagi.