Mini-proyek Bagian 4: Game Tebak Angka
Proyek ini menggabungkan semua ide dari Bagian 3 dan 4: variabel, input, perbandingan, percabangan, perulangan. Hasilnya adalah game kecil yang benar-benar interaktif. Ini juga program yang diagram alirnya kamu lihat di mini-proyek Bagian 1, dan kodenya mengikuti diagram alir itu langkah demi langkah.
Apa yang harus dibuat
Sebuah program yang, saat dijalankan:
- Memilih bilangan bulat acak dari 1 sampai 100 (target), tersembunyi dari pengguna.
- Berulang kali:
- Meminta tebakan dari pengguna.
- Membaca tebakan.
- Menghitung percobaan.
- Mencetak
Too low.,Too high., atauCorrect!berdasarkan perbandingan tebakan dengan target.
- Ketika tebakan cocok, mencetak berapa percobaan yang dibutuhkan, lalu berhenti.
Contoh sesi:
I am thinking of a number between 1 and 100.
Guess: 50
Too high.
Guess: 25
Too low.
Guess: 37
Too high.
Guess: 31
Too low.
Guess: 34
Correct! You got it in 5 attempts.
File
Starter dan versi jadi ada di
projects/03-number-guess/:
starter.go— kerangka dengan komentar TODO. File ini bisa langsung dijalankan: file ini membaca satu tebakan dan mencetak satu baris pengganti, yang harus kamu ganti.finished.go— versi yang sudah berfungsi. Bandingkan dengan punyamu sesudahnya.
Jalankan dengan:
go run projects/03-number-guess/starter.go
Petunjuk
- Tambahkan
"math/rand"ke import, lalurand.Intn(100) + 1memilih target. Panggil sekali, sebelum perulangan. Di dalam perulangan, targetnya tetap sama. forkosong denganbreakcocok di sini: isi perulangan bertanya sekali, lalu rantaiifkeluar ketika pemain menang. Mini-proyek Bagian 1 menunjukkan bentuk yang persis seperti ini.- Gunakan
if,else if,elseuntuk ketiga jawaban, bukanswitch. Di dalamswitch,breakhanya keluar dariswitch, seperti peringatan Bab 18, dan game tidak akan pernah berakhir. - Penghitung percobaan adalah variabel yang diisi
0sebelum perulangan dan dinaikkan denganattempts++di dalam isi perulangan. readGuess()di mini-proyek Bagian 1 mewakili baris-baris pembacaan dari Bab 15. Kamu belum punya fungsi buatanmu sendiri, jadi tulis baris-baris itu di dalam perulangan:fmt.Print,reader.ReadString,strings.TrimSpace, danstrconv.Atoi. Buatreadersekali, sebelum perulangan.
Bagaimana dengan input yang salah?
strconv.Atoi memberikan 0 untuk teks yang
bukan angka, seperti kata Bab 15, dan 0 berada di bawah
semua target. Jadi abc dihitung sebagai percobaan dan
mendapat Too low.:
I am thinking of a number between 1 and 100.
Guess: abc
Too low.
Guess: 34
Correct! You got it in 2 attempts.
Untuk sekarang itu bisa diterima. Tantangan pertama di bawah menanganinya dengan memeriksa rentang, dan Bab 21 menunjukkan pemeriksaan error yang sebenarnya.
Apa yang belum boleh kamu gunakan
- Slice. Tidak perlu menyimpan riwayat tebakan.
- Fungsi buatanmu sendiri. Game ini muat di dalam
main.
Tantangan lebih besar (opsional)
Kalau versi dasarnya sudah berjalan, coba salah satu ini:
- Periksa bahwa setiap tebakan berada dari 1 sampai 100. Kalau tidak,
cetak pesan dan pakai
continue, sebelumattempts++, supaya tebakan yang salah tidak dihitung. - Setelah tiga tebakan salah, cetak petunjuk apakah targetnya genap atau ganjil.
- Lacak tebakan tertinggi dan terendah sejauh ini, dan cetak
rentangnya setiap putaran, seperti
(known range: 32 to 49). - Cetak
1 attempt, bukan1 attempts, untuk tebakan pertama yang benar.
Tidak ada yang wajib supaya proyek ini dianggap selesai.
Selesai?
Ketika game berjalan lancar dari awal sampai akhir (memilih target, menerima tebakan, memberi tanggapan, dan berakhir dengan jumlah percobaan), lanjut ke proyek kedua Bagian 4, Batu-Gunting-Kertas.