Menu
CoddyTech

Revisão - Sistema de saúde

Parte da seção Programação orientada a objetos do Journey de GDScript da Coddy. Lição 39 de 65.

challenge icon

Desafio

Fácil

Crie um sistema de vida no qual o componente de vida anuncie cada alteração e uma barra de vida reaja a ela.

Health (health.gd) armazena max_hp e hp (ambos começam com o valor fornecido ao construtor) e declara três sinais: damaged(amount, hp), healed(amount, hp) e died.

  • take_damage(amount) reduz hp, sem nunca ficar abaixo de 0, e emite damaged com o HP realmente perdido e o novo valor de hp. Quando hp chega a 0, também emite died.
  • heal(amount) aumenta hp, sem nunca ultrapassar max_hp, e emite healed com o HP realmente restaurado e o novo valor de hp. Curar com a vida cheia não emite nada.
  • Quando hp é 0, ambos os métodos não fazem nada.

HealthBar (health_bar.gd) tem o método watch(health), que conecta os três sinais aos próprios métodos. Eles exibem -8 HP [12/20], +5 HP [17/20] e Game over. A barra armazena o HP máximo de que precisa como um número; não mantenha uma referência ao objeto Health.

O código fornecido lê o HP máximo e quantos comandos vêm em seguida (damage 8, heal 5), e então exibe o HP final. Para um máximo de 20 e os comandos damage 8, heal 5, heal 10, damage 30, heal 5, ele exibe:

-8 HP [12/20]
+5 HP [17/20]
+3 HP [20/20]
-20 HP [0/20]
Game over
Final HP: 0

Seu código deve ficar em health.gd e health_bar.gd. main.gd contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

extends Node

func _ready():
	# Código de entrada/saída fornecido: mantenha-o como está
	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)

Todas as lições de Programação orientada a objetos

Pratique por conta própria: Compilador de GDScript online