Menu
CoddyTech

Eigenschaften

Teil des Abschnitts Objektorientierte Programmierung der GDScript-Journey von Coddy. Lektion 6 von 65.

Die Variablen, die eine Klasse deklariert, sind ihre Eigenschaften (auch Member-Variablen genannt): die Daten, die jedes Objekt mit sich führt. Deklariere sie am Anfang der Klasse, jede mit einem Typ und einem Startwert:

# 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] = []

Eine ohne Wert deklarierte Eigenschaft beginnt mit dem Standardwert ihres Typs: 0 für int, "" für String, false für bool und einem leeren Array für Array[String].

Außerhalb der Klasse liest und änderst du eine Eigenschaft mit einem Punkt. Innerhalb der Methoden der Klasse verwendest du ihren Namen:

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

Jedes Objekt erhält eine eigene Kopie jeder Eigenschaft, einschließlich Arrays: [] erstellt für jeden Spieler ein neues leeres Array, sodass das Inventar eines anderen Spielers leer bleibt.

Der Typ wird überprüft: p.level = "max" ist ein Fehler, der gemeldet wird, bevor das Programm ausgeführt wird, weil level einen int enthält.

challenge icon

Aufgabe

Einfach

Vervollständige die Klasse Player in player.gd. Deklariere diese Eigenschaften:

  • player_name, ein String, der mit "Hero" beginnt
  • level, ein int, der mit 1 beginnt
  • hp, ein int, der mit 100 beginnt
  • inventory, ein Array[String], der leer beginnt

Vervollständige dann die Methode describe(). Sie gibt NAME (level LEVEL, HP hp): ITEMS zurück, wobei ITEMS das mit ", " verbundene Inventar ist oder no items, wenn das Inventar leer ist.

Der bereitgestellte Code liest einen Namen für einen Spieler ein, danach die Anzahl der folgenden Befehle und anschließend die Befehle: hit AMOUNT, item NAME oder level. Er ändert die Eigenschaften des Spielers direkt und gibt schließlich describe() für diesen Spieler sowie für einen zweiten Spieler aus, den er nicht verändert hat. Für Ada und die Befehle hit 30, item sword, level und item shield gibt er Folgendes aus:

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

Dein Code gehört in player.gd. main.gd enthält den bereitgestellten Ein-/Ausgabecode und kann nicht bearbeitet werden.

Probier es selbst

extends Node

func _ready():
	# Vorgegebener Ein-/Ausgabecode: unverändert lassen
	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 dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-GDScript-Compiler