Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Uzupełnij klasę Player w pliku player.gd. Zadeklaruj te właściwości:

  • player_name, wartość typu String, która początkowo wynosi "Hero"
  • level, wartość typu int, która początkowo wynosi 1
  • hp, wartość typu int, która początkowo wynosi 100
  • inventory, wartość typu Array[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 items

Twó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())
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator GDScript online