Mini-proyek Bagian 3: Lembar Karakter

Proyek ini merangkum seluruh Bagian 3: variabel, string, angka, dan input dari keyboard.

Program menanyakan beberapa hal tentang karakter game pengguna, lalu mencetak lembar karakter yang rapi berisi setiap jawaban ditambah satu nilai yang dihitung program itu sendiri.

Apa yang harus dibuat

Sebuah program yang, saat dijalankan:

  1. Meminta lima informasi tentang karakter kepada pengguna:

    • Name (teks)
    • Class (teks, misalnya "Warrior", "Mage", "Rogue")
    • Level (bilangan bulat)
    • HP (bilangan bulat — hit point)
    • MP (bilangan bulat — magic point)
  2. Menghitung nilai bernama Power, dengan rumus ini:

     power := hp + mp*2 + level*10
  3. Mencetak lembar karakter kurang lebih seperti ini:

     +--------------------------------------+
     | CHARACTER SHEET                      |
     +--------------------------------------+
     | Name : Keiko
     | Class: Mage
     | Level: 7
     | HP   : 95
     | MP   : 60
     | Power: 285
     +--------------------------------------+

Lebar kotak tidak harus sama persis. Yang penting setiap nilai muncul dengan label, dan baris Power menampilkan nilai yang dihitung.

File

Starter dan versi jadi ada di projects/02-character-sheet/:

  • starter.go — prompt nama sudah dikerjakan untukmu, dan sisanya disusun dengan komentar TODO. Selesaikan supaya lembar karakter tercetak di akhir. File ini bisa langsung dijalankan: file ini menanyakan nama dan mencetak satu baris pengganti, yang harus kamu ganti.
  • finished.go — versi yang sudah berfungsi. Lihat setelah kamu mencoba punyamu.

Jalankan dengan:

go run projects/02-character-sheet/starter.go

Petunjuk

  • Setiap prompt adalah fmt.Print("Label: ") diikuti pembacaan. Pembacaan pertama mendeklarasikan text dengan :=, dan pembacaan berikutnya memakainya lagi dengan =.
  • Rapikan setiap baris dengan strings.TrimSpace. Konversi nilai yang akan dihitung dengan strconv.Atoi, dan tambahkan "strconv" ke import.
  • Gunakan fmt.Printf seperti fmt.Printf("| Name : %s\n", name) untuk baris berlabel — lebih rapi daripada menyambung string dengan +.
  • Untuk border, strings.Repeat("-", 38) atau yang serupa menghemat pengetikan tanda hubung.

Apa yang belum boleh kamu gunakan

  • if untuk memeriksa input. Kalau pengguna mengetik abc untuk HP, program menganggapnya 0 dan mencetak Power yang lebih rendah. Untuk sekarang tidak apa-apa.
  • Perulangan. Tulis setiap prompt secara lengkap.
  • Fungsi buatanmu sendiri. Hanya main dan fungsi library yang sudah kamu lihat yang dibutuhkan.

Selesai?

Kalau lembar karakter menampilkan setiap nilai dengan label dan baris Power menunjukkan jumlah yang benar, kamu selesai. Lanjut ke Bab 16 — if, else, dan switch, di mana programmu mulai mengambil keputusan.