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:

  1. 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)
  2. Menghitung nilai bernama Power, dengan rumus ini:

     power = hp + mp * 2 + level * 10
  3. Mencetak 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.write diikuti io.read. Bungkus nilai yang akan dihitung dengan tonumber.
  • Gunakan string.format dengan %s dan %d untuk 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

  • if untuk 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.