Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Sağ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), hp değerini 0'ın altına düşürmeden azaltır ve gerçekten kaybedilen HP ile yeni hp değerini içeren damaged sinyalini gönderir. hp değeri 0'a ulaştığında ayrıca died sinyalini de gönderir.
  • heal(amount), hp değerini max_hp'nin üstüne çıkarmadan artırır ve gerçekten geri yüklenen HP ile yeni hp değerini içeren healed sinyalini gönderir. Sağlık tamken iyileştirme hiçbir sinyal göndermez.
  • hp değeri 0 olduğ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: 0

Kodunuzu 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

Kendi başına pratik yap: Online GDScript derleyicisi