Mini-proyek Bagian 4: Batu-Gunting-Kertas
Proyek kedua Bagian 4 adalah permainan klasik. Kamu mengetik rock,
paper, atau scissors; komputer memilih secara acak; program menentukan
siapa yang menang. Proyek ini menggabungkan angka acak,
switch, rantai if, serta
&& dan ||. Ini program pertamamu yang
bermain melawan komputer.
Apa yang harus dibuat
Sebuah program yang, saat dijalankan:
- Meminta pemain mengetik
rock,paper, atauscissors. - Memilih langkah komputer secara acak.
- Mencetak pilihan komputer.
- Mencetak hasilnya: seri, menang, kalah, atau catatan langkah tidak sah.
Aturan menangnya seperti biasa:
- batu (rock) mengalahkan gunting (scissors),
- kertas (paper) mengalahkan batu,
- gunting mengalahkan kertas.
Contoh sesi:
Choose rock, paper, or scissors: rock
The computer chose scissors.
You win!
Hasil seri, dan langkah yang tidak dikenal program:
Choose rock, paper, or scissors: paper
The computer chose paper.
It is a tie!
Choose rock, paper, or scissors: banana
The computer chose rock.
That is not a valid choice.
File
Starter dan versi jadi ada di
projects/rock-paper-scissors/:
starter.go— prompt sudah ditulis, dengan komentar TODO untuk ketiga langkah. File ini bisa langsung dijalankan, dan mencetak satu baris pengganti, yang harus kamu ganti.finished.go— versi yang sudah berfungsi. Baca setelah kamu mencoba punyamu.
Jalankan dengan:
go run projects/rock-paper-scissors/starter.go
Petunjuk
- Tambahkan
"math/rand"ke import.rand.Intn(3) + 1memberikan1,2, atau3. Ubah menjadi kata denganswitch. - Deklarasikan katanya sebelum
switchdenganvar computer string, dan isi dengan=di dalam setiap case. Variabel yang dideklarasikan dengan:=di dalam case akan hilang di akhir case itu, seperti yang ditunjukkan Bab 16. - Rapikan ketikan pemain dengan
strings.TrimSpace, seperti biasa. Tanpa itu, akhiran baris tetap ada diplayerdan tidak ada langkah yang pernah cocok. - Periksa pilihan yang tidak sah lebih dulu: kalau kata yang diketik
bukan salah satu dari ketiganya, katakan begitu.
player != "rock" && player != "paper" && player != "scissors"hanya benar kalau tidak ada yang cocok. - Pemeriksaan menang adalah tiga kasus yang digabung dengan
||, masing-masing berupa&&dari dua langkah, sepertiplayer == "rock" && computer == "scissors". Barisnya jadi panjang, jadi pecah saja. Akhiri setiap baris dengan||, karena Go mengakhiri pernyataan pada pindah baris yang bisa menyelesaikan pernyataan itu:
} else if (player == "rock" && computer == "scissors") ||
(player == "paper" && computer == "rock") ||
(player == "scissors" && computer == "paper") {Apa yang belum boleh kamu gunakan
- Slice (Bagian 5). Tiga baris
casemenggantikan daftar pilihan. - Fungsi buatanmu sendiri (Bagian 5). Seluruh game muat di dalam
main. - Perulangan, kecuali kalau kamu menambahkan fitur main lagi pada tantangan di bawah.
Tantangan lebih besar (opsional)
- Main lagi. Bungkus game dalam
forkosong, dan berhenti denganbreakketika pemain mengetikquit, bukan sebuah langkah. Buatreadersekali, sebelum perulangan. - Catat skor. Lacak kemenangan dan kekalahan dalam dua variabel dan cetak hasilnya setelah setiap ronde.
Tidak ada yang wajib untuk menyelesaikan proyek ini.
Selesai?
Ketika game menerima langkahmu, memilih langkahnya sendiri, dan mengumumkan hasil yang benar untuk seri, menang, kalah, dan input yang tidak sah, kamu selesai. Lanjut ke Bab 21 — Fungsi dan error, awal dari Bagian 5.