Rangkuman, Sistem Kesehatan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 39 dari 65.
Tantangan
MudahBuat sistem health yang membuat komponen health mengumumkan setiap perubahan dan health bar meresponsnya.
Health (health.gd) menyimpan max_hp dan hp (keduanya dimulai dari nilai yang diberikan kepada constructor) dan mendeklarasikan tiga signal: damaged(amount, hp), healed(amount, hp), dan died.
take_damage(amount)mengurangihp, tidak pernah kurang dari0, dan mengeluarkan signaldamageddengan jumlah HP yang benar-benar hilang dan nilai baruhp. Saathpmencapai0, fungsi ini juga mengeluarkan signaldied.heal(amount)menambahhp, tidak pernah melebihimax_hp, dan mengeluarkan signalhealeddengan jumlah HP yang benar-benar dipulihkan dan nilai baruhp. Memulihkan health saat health penuh tidak mengeluarkan signal apa pun.- Setelah
hpbernilai0, kedua fungsi tidak melakukan apa pun.
HealthBar (health_bar.gd) memiliki watch(health), yang menghubungkan ketiga signal ke method miliknya. Method tersebut mencetak -8 HP [12/20], +5 HP [17/20], dan Game over. Bar menyimpan HP maksimum yang dibutuhkannya sebagai angka. Jangan menyimpan referensi ke object Health.
Kode yang disediakan membaca HP maksimum dan jumlah perintah berikutnya (damage 8, heal 5), lalu mencetak HP akhir. Untuk HP maksimum 20 dan perintah damage 8, heal 5, heal 10, damage 30, heal 5, kode ini mencetak:
-8 HP [12/20]
+5 HP [17/20]
+3 HP [20/20]
-20 HP [0/20]
Game over
Final HP: 0Tulis kodemu di health.gd dan health_bar.gd. main.gd berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
var health := Health.new(int(OS.read_string_from_stdin()))
var bar := HealthBar.new()
bar.watch(health)
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
if parts[0] == "damage":
health.take_damage(int(parts[1]))
elif parts[0] == "heal":
health.heal(int(parts[1]))
print("Final HP: ", health.hp)
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan PenggunaLatihan sendiri: Compiler GDScript online