Właściwości
Część sekcji Programowanie obiektowe ścieżki GDScript w Coddy. Lekcja 6 z 65.
Zmienne deklarowane przez klasę to jej właściwości (nazywane również zmiennymi składowymi): dane, które przechowuje każdy obiekt. Zadeklaruj je na początku klasy, każdą z typem i wartością początkową:
# 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] = []Właściwość zadeklarowana bez wartości zaczyna od wartości domyślnej dla swojego typu: 0 dla int, "" dla String, false dla bool i od pustej tablicy dla Array[String].
Poza klasą odczytujesz i zmieniasz właściwość za pomocą kropki. W metodach klasy używasz jej nazwy:
var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]Każdy obiekt otrzymuje własną kopię każdej właściwości, w tym tablic: [] tworzy nową pustą tablicę dla każdego gracza, więc ekwipunek innego gracza pozostaje pusty.
Typ jest sprawdzany: p.level = "max" to błąd zgłaszany przed uruchomieniem programu, ponieważ level przechowuje wartość typu int.
Wyzwanie
ŁatwyUzupełnij klasę Player w pliku player.gd. Zadeklaruj te właściwości:
player_name, wartość typuString, która początkowo wynosi"Hero"level, wartość typuint, która początkowo wynosi1hp, wartość typuint, która początkowo wynosi100inventory, wartość typuArray[String], która początkowo jest pusta
Następnie uzupełnij metodę describe(). Zwraca ona NAME (level LEVEL, HP hp): ITEMS, gdzie ITEMS to elementy ekwipunku połączone za pomocą ", " albo no items, gdy ekwipunek jest pusty.
Dostarczony kod odczytuje imię jednego gracza, następnie liczbę kolejnych poleceń, a potem same polecenia: hit AMOUNT, item NAME lub level. Zmienia bezpośrednio właściwości gracza, a na końcu wyświetla wynik describe() dla tego gracza oraz dla drugiego gracza, którego właściwości nie zostały zmienione. Dla Ada i poleceń hit 30, item sword, level oraz item shield wyświetla:
Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no itemsTwój kod umieść w pliku player.gd. Plik main.gd zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
extends Node
func _ready():
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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())
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe selfMetodyWłaściwościKonstruktor (_init)Powtórka – prosty kalkulator4Polimorfizm
Ponowne omówienie przesłaniania metodDuck typingKlasy i metody abstrakcyjneProjektowanie interfejsówPowtórzenie – kalkulator kształtów7Sygnały
Czym jest sygnał?Deklarowanie i emitowanieŁączenie z sygnałamiSygnały z argumentamiPodsumowanie — system zdrowia10Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu2Właściwości klas
Zmienne instancji a zmienne statyczneFunkcje statyczneSettery właściwościGettery właściwościPrywatne z konwencjiPodsumowanie — menedżer kont bankowych5Enkapsulacja
Elementy publiczne i prywatneWalidacja za pomocą setterówUkrywanie informacjiWłaściwości tylko do odczytuPodsumowanie – system ewidencji uczniów8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieKlasy wewnętrzneWęzły jako komponentyRefCounted a NodeTypy wyliczeniowe w klasach11Projekt: Zarządzanie biblioteką
Przegląd projektuKlasy książki i użytkownika3Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superNadpisywanie metodŁańcuchy dziedziczeniaSprawdzanie typów za pomocą isPodsumowanie – hierarchia pracowników6Metody specjalne
Wprowadzenie do metod wirtualnychMetoda _to_stringWłasne iteratoryPodsumowanie — własna lista9Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec StrategyPoćwicz samodzielnie: Kompilator GDScript online