Mini-proyek Bagian 4: Batu-Gunting-Kertas

Proyek kedua di Bagian 4 ini adalah permainan klasik. Kamu ketik batu, gunting, atau kertas; komputer memilih secara acak; program menentukan siapa yang menang. Ini menggabungkan angka acak, if/elseif/else, dan and/or — program pertamamu yang dimainkan melawan komputer.

Yang harus dibuat

Sebuah program yang, ketika dijalankan:

  1. Meminta pemain mengetik rock, paper, atau scissors.
  2. Memilih gerakan komputer secara acak.
  3. Mencetak apa yang dipilih komputer.
  4. Mencetak hasilnya: seri, menang, kalah, atau keterangan jika gerakan tidak valid.

Aturan menang adalah aturan biasa:

  • batu mengalahkan gunting,
  • kertas mengalahkan batu,
  • gunting mengalahkan kertas.

Contoh sesi permainan:

Choose rock, paper, or scissors: rock
The computer chose scissors.
You win!

File

Versi starter dan versi jadi ada di projects/rock-paper-scissors/:

  • starter.lua — prompt sudah ditulis, dengan komentar TODO untuk tiga langkahnya.
  • finished.lua — versi yang sudah berjalan. Baca setelah kamu mencoba punyamu sendiri.

Jalankan dengan:

lua projects/rock-paper-scissors/starter.lua

Petunjuk

  • math.random(1, 3) menghasilkan 1, 2, atau 3. Ubah menjadi kata dengan if/elseif/else.
  • Periksa pilihan yang tidak valid terlebih dahulu: jika kata yang diketik bukan salah satu dari ketiganya, beri tahu pemain dan hentikan program. player ~= "rock" and player ~= "paper" and player ~= "scissors" bernilai true hanya jika tidak ada yang cocok.
  • Tes kemenangan adalah tiga kasus yang digabung dengan or, masing-masing merupakan and dari dua gerakan, seperti player == "rock" and computer == "scissors".

Yang belum bisa digunakan

  • Tabel (Bagian 5). Tiga cabang if menggantikan daftar pilihan.
  • Fungsimu sendiri (Bagian 5). Seluruh permainan muat dalam satu skrip.
  • Perulangan, kecuali kamu menambahkan fitur main-lagi di tantangan tambahan di bawah.

Tantangan lebih besar (opsional)

  • Main lagi. Bungkus permainan dalam perulangan while true do ... end dan berhenti ketika pemain mengetik quit alih-alih sebuah gerakan.
  • Catat skor. Lacak kemenangan dan kekalahan dalam dua variabel dan cetak rangkumannya setelah setiap ronde.

Keduanya tidak wajib untuk menyelesaikan proyek ini.

Sudah selesai?

Ketika permainan menerima gerakanmu, memilih gerakannya sendiri, dan mengumumkan hasil yang benar untuk seri, menang, kalah, dan input yang tidak valid, kamu sudah selesai. Lanjut ke Bab 21 — Fungsi, awal dari Bagian 5.