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.
Aufgabe
EinfachVervollständige die Klasse Player in player.gd. Deklariere diese Eigenschaften:
player_name, einString, der mit"Hero"beginntlevel, einint, der mit1beginnthp, einint, der mit100beginntinventory, einArray[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 itemsDein 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())
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort selfMethodenEigenschaftenKonstruktor (_init)Wiederholung – Einfacher Taschenrechner4Polymorphie
Methodenüberschreibung erneut betrachtetDuck-TypisierungAbstrakte Klassen und MethodenSchnittstellendesignRückblick – Formrechner2Klassenattribute
Instanz- vs. statische VariablenStatische FunktionenProperty-SetterProperty-GetterPrivat nach KonventionWiederholung – Bankkontenverwaltung5Kapselung
Öffentliche und private MemberValidierung mit SetternInformationsverbergenSchreibgeschützte EigenschaftenRückblick – System zur Schülerverwaltung8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungInnere KlassenNodes als KomponentenRefCounted vs. NodeEnums in Klassen11Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungVererbungskettenTypprüfungen mit isWiederholung – Mitarbeiterhierarchie6Spezielle Methoden
Einführung in virtuelle MethodenDie _to_string-MethodeBenutzerdefinierte IteratorenRückblick – Benutzerdefinierte Liste9Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBeobachter-MusterStrategie-Muster12Abschließende Herausforderungen
E-Learning-PlattformBankensystemEntwicklung von SpielfigurenFahrzeugvermietungÜbe selbstständig: Online-GDScript-Compiler