Mini-proyek Bagian 3: Character Sheet
Proyek ini merangkum semua materi dari Bagian 3: variabel, string, angka, dan masukan dari keyboard.
Program ini akan menanyakan beberapa hal tentang karakter game pemain, lalu mencetak character sheet yang sudah diformat lengkap dengan setiap jawaban ditambah satu nilai yang dihitung sendiri oleh program.
Yang harus dibuat
Sebuah program yang, ketika dijalankan:
Meminta pemain memasukkan lima informasi tentang karakter:
- Name (teks)
- Class (teks, misalnya "Warrior", "Mage", "Rogue")
- Level (bilangan bulat)
- HP (bilangan bulat — hit points)
- MP (bilangan bulat — magic points)
Menghitung nilai bernama Power, dengan rumus ini:
power = hp + mp * 2 + level * 10Mencetak character sheet kira-kira seperti ini:
+--------------------------------------+ | CHARACTER SHEET | +--------------------------------------+ | Name : Keiko | Class: Mage | Level: 7 | HP : 95 | MP : 60 | Power: 285 +--------------------------------------+
Lebar kotaknya tidak harus sama persis. Yang penting adalah setiap nilai muncul dengan labelnya, dan baris Power menampilkan nilai yang sudah dihitung.
File
Versi starter dan versi selesai ada di
projects/02-character-sheet/:
starter.lua— prompt-prompt sudah disusun dengan komentar TODO. Selesaikan supaya character sheet tercetak di akhir program.finished.lua— versi yang sudah berjalan. Lihat setelah mencoba punyamu sendiri.
Jalankan dengan:
lua projects/02-character-sheet/starter.lua
Petunjuk
- Setiap prompt butuh
io.writediikutiio.read. Bungkus nilai yang akan dihitung dengantonumber. - Gunakan
string.formatdengan%sdan%duntuk baris berlabel — lebih rapi daripada menyambung setiap baris dengan lima operator... - Untuk border-nya,
string.rep("-", 38)atau yang serupa bisa menghemat pengetikan tanda hubung satu per satu.
Yang belum bisa dipakai
ifuntuk memvalidasi masukan. Kalau pemain mengetik"abc"untuk HP, program akan error. Itu tidak masalah untuk sekarang.- Perulangan. Tulis setiap prompt secara eksplisit satu per satu.
- Fungsi buatan sendiri. Fungsi bawaan (
io.read,io.write,print,tonumber,string.format,string.rep) semuanya boleh dipakai.
Sudah selesai?
Kalau character sheet menampilkan setiap nilai dengan labelnya dan baris Power menunjukkan jumlah yang benar, kamu sudah selesai. Lanjut ke Bab 16 — if / elseif / else, di mana validasi masukan jadi mungkin untuk dilakukan.