Menu
CoddyTech

Propiedades

Parte de la sección Programación orientada a objetos del Journey de GDScript de Coddy. Lección 6 de 65.

Las variables que declara una clase son sus propiedades (también llamadas variables miembro): los datos que lleva cada objeto. Decláralas en la parte superior de la clase, cada una con un tipo y un 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] = []

Una propiedad declarada sin un valor comienza con el valor predeterminado de su tipo: 0 para int, "" para String, false para bool y un arreglo vacío para Array[String].

Fuera de la clase, lees y cambias una propiedad con un punto. Dentro de los métodos de la clase, usas su nombre:

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

Cada objeto obtiene su propia copia de cada propiedad, incluidos los arreglos: [] crea un nuevo arreglo vacío para cada jugador, así que el inventario de otro jugador permanece vacío.

Se comprueba el tipo: p.level = "max" es un error que se informa antes de que se ejecute el programa, porque level contiene un int.

challenge icon

Desafío

Fácil

Completa la clase Player en player.gd. Declara estas propiedades:

  • player_name, un String que empieza como "Hero"
  • level, un int que empieza en 1
  • hp, un int que empieza en 100
  • inventory, un Array[String] que empieza vacío

Después, completa el método describe(). Devuelve NAME (level LEVEL, HP hp): ITEMS, donde ITEMS es el inventario unido con ", ", o no items cuando el inventario está vacío.

El código proporcionado lee un nombre para un jugador, luego cuántos comandos siguen y, después, los comandos: hit AMOUNT, item NAME o level. Cambia directamente las propiedades del jugador y, finalmente, imprime describe() para ese jugador y para un segundo jugador al que nunca modificó. Para Ada y los comandos hit 30, item sword, level y item shield, imprime:

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

Tu código va en player.gd. main.gd contiene el código de entrada/salida proporcionado y no se puede editar.

Pruébalo tú mismo

extends Node

func _ready():
	# Código de entrada/salida proporcionado: mantenlo tal 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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de GDScript online