Menu
CoddyTech

Propriedades

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

As variáveis que uma classe declara são suas propriedades (também chamadas de variáveis membro): os dados que todo objeto carrega. Declare-as no início da classe, cada uma com um tipo e um valor inicial:

# player.gd
class_name Player
extends RefCounted

var player_name: String = "Hero"
var level: int = 1
var hp: float = 100.0
var inventory: Array[String] = []

Uma propriedade declarada sem um valor começa com o valor padrão de seu tipo: 0 para int, "" para String, false para bool e um array vazio para Array[String].

Fora da classe, você lê e altera uma propriedade usando um ponto. Dentro dos métodos da classe, você usa o nome dela:

var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]

Cada objeto recebe sua própria cópia de cada propriedade, incluindo arrays: [] cria um novo array vazio para cada jogador, então o inventário de outro jogador permanece vazio.

O tipo é verificado: p.level = "max" é um erro informado antes de o programa ser executado, porque level contém um int.

challenge icon

Desafio

Fácil

Complete a classe Player em player.gd. Declare estas propriedades:

  • player_name, uma String que começa como "Hero"
  • level, um int que começa em 1
  • hp, um int que começa em 100
  • inventory, um Array[String] que começa vazio

Em seguida, complete o método describe(). Ele retorna NAME (level LEVEL, HP hp): ITEMS, em que ITEMS é o inventário unido com ", ", ou no items quando o inventário está vazio.

O código fornecido lê um nome para um jogador, depois quantos comandos vêm a seguir e, então, os comandos: hit AMOUNT, item NAME ou level. Ele altera diretamente as propriedades do jogador e, por fim, imprime describe() para esse jogador e para um segundo jogador que não foi alterado. Para Ada e os comandos hit 30, item sword, level e item shield, ele imprime:

Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no items

Seu código deve ficar em player.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 hero := Player.new()
	hero.player_name = OS.read_string_from_stdin()
	var guest := Player.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		match parts[0]:
			"hit":
				hero.hp -= int(parts[1])
			"item":
				hero.inventory.append(parts[1])
			"level":
				hero.level += 1
	print(hero.describe())
	print(guest.describe())
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

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

Pratique por conta própria: Compilador de GDScript online