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

Membuat Math Game: Menampilkan Soal Acak

⏱ 30 Menit Scratch August 2026 🔧 Scratch Website

Melanjutkan Math Game sebelumnya (menu pilihan penjumlahan/perkalian), kini kita akan membuat sistem yang benar-benar menampilkan soal matematika secara acak, sejumlah yang diminta pemain.

Langkah 1: Menanyakan Jumlah Soal

Setelah pemain memilih opsi yang valid (1 atau 2), tambahkan pertanyaan baru:

ask "How many questions do you want?" and wait

Jawaban pemain (misalnya 3) akan tersimpan di blok answer, menggantikan nilai sebelumnya (pilihan 1/2 yang sudah dijawab lebih dulu).

Langkah 2: Masalah — Pilihan Awal Hilang

Karena blok answer hanya bisa menyimpan satu nilai dalam satu waktu, begitu pemain menjawab “berapa banyak soal”, jawaban pilihan awal (penjumlahan/perkalian) akan tertimpa dan hilang. Padahal kita masih butuh tahu jenis soal apa yang harus ditanyakan nanti.

Langkah 3: Menyimpan Pilihan ke Variabel Terpisah

Solusinya: buat variabel baru bernama Choice, lalu segera simpan nilai answer ke variabel ini sebelum pertanyaan berikutnya ditanyakan:

when I receive [start]
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
    broadcast [question]
else
    say "Incorrect choice" for 2 seconds
    broadcast [start]

Dengan begitu, nilai pilihan (1 atau 2) aman tersimpan di variabel Choice dan tidak akan tertimpa, meskipun blok answer nantinya berubah nilai karena pertanyaan “berapa banyak soal” tadi.

Langkah 4: Menampilkan Soal Sebanyak yang Diminta

Buat skrip baru yang berjalan saat pesan question diterima, menggunakan repeat sebanyak nilai answer (jumlah soal yang diminta pemain):

when I receive [question]
repeat (answer)
    if <(Choice) = 1> then
        ask "What is 5 + 5?" and wait
    else
        ask "What is 3 x 2?" and wait

Berdasarkan nilai Choice yang sudah disimpan sebelumnya, skrip ini menentukan jenis soal yang ditanyakan — penjumlahan jika Choice = 1, atau perkalian jika Choice = 2.

Langkah 5: Membuat Angka pada Soal Menjadi Acak

Agar soal tidak selalu sama (“5 + 5” terus-menerus), gunakan blok pick random 1 to 10 dari kategori Operators untuk kedua angka pada soal. Karena teks soal terdiri dari beberapa bagian (kata “What is”, angka pertama, operator, angka kedua), kita perlu menyusunnya menggunakan blok join bertingkat:

join (join (join "What is" (pick random 1 to 10)) "plus") (pick random 1 to 10)

Cara menyusunnya bertahap:

  1. Buat join "What is" (pick random 1 to 10) → menghasilkan misalnya “What is 6”.
  2. Bungkus hasil tadi dalam join baru, tambahkan teks “plus” → menghasilkan “What is 6 plus”.
  3. Bungkus lagi dalam join baru, tambahkan pick random 1 to 10 kedua → menghasilkan hasil akhir seperti “What is 6 plus 4”.

Lakukan hal yang sama untuk soal perkalian, gunakan kata “multiply by” sebagai penghubungnya, menghasilkan soal seperti “What is 2 multiply by 10”.

Skrip Lengkap Sejauh Ini

when [green flag] clicked
broadcast [start]

when I receive [start]
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
    broadcast [question]
else
    say "Incorrect choice" for 2 seconds
    broadcast [start]

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

Ringkasan

  • Karena blok answer hanya menyimpan satu nilai dalam satu waktu, nilai penting yang perlu dipakai belakangan harus disalin ke variabel terpisah (seperti Choice) sebelum pertanyaan berikutnya menimpanya.
  • repeat (answer) memungkinkan jumlah pengulangan soal disesuaikan secara dinamis berdasarkan input pengguna.
  • Blok join bisa disusun bertingkat (nested) untuk menggabungkan lebih dari dua potongan teks/angka menjadi satu kalimat utuh.
  • pick random digunakan agar angka pada soal selalu berbeda setiap kali ditanyakan.

Selanjutnya

Pada tutorial berikutnya, kita akan memeriksa apakah jawaban yang dimasukkan pemain untuk setiap soal sudah benar atau salah, dan menghitung skor akhir permainan.