Tekrar - Sağlık Sistemi
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 39 / 65.
Görev
KolaySağlık bileşeninin her değişikliği duyurduğu ve bir sağlık çubuğunun buna tepki verdiği bir sağlık sistemi oluşturun.
Health (health.gd), max_hp ve hp değerlerini saklar (ikisi de kurucuya verilen değerle başlar) ve üç sinyal bildirir: damaged(amount, hp), healed(amount, hp) ve died.
take_damage(amount),hpdeğerini0'ın altına düşürmeden azaltır ve gerçekten kaybedilen HP ile yenihpdeğerini içerendamagedsinyalini gönderir.hpdeğeri0'a ulaştığında ayrıcadiedsinyalini de gönderir.heal(amount),hpdeğerinimax_hp'nin üstüne çıkarmadan artırır ve gerçekten geri yüklenen HP ile yenihpdeğerini içerenhealedsinyalini gönderir. Sağlık tamken iyileştirme hiçbir sinyal göndermez.hpdeğeri0olduğunda her iki yöntem de hiçbir şey yapmaz.
HealthBar (health_bar.gd), üç sinyalin tamamını kendi yöntemlerine bağlayan watch(health) yöntemine sahiptir. Bu yöntemler -8 HP [12/20], +5 HP [17/20] ve Game over çıktısını verir. Çubuk, ihtiyaç duyduğu maksimum HP'yi bir sayı olarak saklar; Health nesnesine başvuru tutmayın.
Verilen kod, maksimum HP'yi ve ardından kaç komut geleceğini (damage 8, heal 5) okur, sonra son HP değerini yazdırır. Maksimum değer 20 ve komutlar damage 8, heal 5, heal 10, damage 30, heal 5 olduğunda şu çıktıyı verir:
-8 HP [12/20]
+5 HP [17/20]
+3 HP [20/20]
-20 HP [0/20]
Game over
Final HP: 0Kodunuzu health.gd ve health_bar.gd dosyalarına yazın. main.gd, verilen girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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)
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt SistemiKendi başına pratik yap: Online GDScript derleyicisi