Özellikler
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 6 / 65.
Bir sınıfın bildirdiği değişkenler, onun özellikleridir (üye değişkenleri olarak da adlandırılır): her nesnenin taşıdığı veriler. Bunları sınıfın en üstünde, her birini türü ve başlangıç değeriyle birlikte bildirin:
# 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] = []Değer belirtilmeden bildirilen bir özellik, türünün varsayılan değeriyle başlar: int için 0, String için "", bool için false ve Array[String] için boş bir dizi.
Sınıfın dışında bir özelliği nokta kullanarak okur ve değiştirirsin. Sınıfın metotlarının içinde ise özelliğin adını kullanırsın:
var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]Her nesne, diziler de dahil olmak üzere her özelliğin kendi kopyasını alır: [] her oyuncu için yeni, boş bir dizi oluşturur; böylece başka bir oyuncunun envanteri boş kalır.
Tür denetlenir: p.level = "max" program çalışmadan önce bildirilen bir hatadır, çünkü level bir int tutar.
Görev
Kolayplayer.gd içindeki Player sınıfını tamamla. Şu özellikleri tanımla:
player_name, başlangıç değeri"Hero"olan birStringlevel, başlangıç değeri1olan birinthp, başlangıç değeri100olan birintinventory, başlangıçta boş olan birArray[String]
Ardından describe() metodunu tamamla. Bu metot, ITEMS envanterin ", " ile birleştirilmiş hâli olacak şekilde NAME (level LEVEL, HP hp): ITEMS döndürür; envanter boşsa no items döndürür.
Verilen kod bir oyuncu için bir ad, ardından kaç komut geleceğini ve sonra da komutları okur: hit AMOUNT, item NAME veya level. Oyuncunun özelliklerini doğrudan değiştirir ve son olarak bu oyuncu ile hiç değiştirmediği ikinci bir oyuncu için describe() çıktısını yazdırır. Ada ve hit 30, item sword, level ve item shield komutları için şu çıktıyı verir:
Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no itemsKodunu player.gd dosyasına yaz. main.gd verilen girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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())
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt SistemiKendi başına pratik yap: Online GDScript derleyicisi