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.
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).
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.
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.
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.
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:
join "What is" (pick random 1 to 10) → menghasilkan misalnya “What is 6”.join baru, tambahkan teks “plus” → menghasilkan “What is 6 plus”.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”.
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
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.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.Pada tutorial berikutnya, kita akan memeriksa apakah jawaban yang dimasukkan pemain untuk setiap soal sudah benar atau salah, dan menghitung skor akhir permainan.