property
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 6 dari 65.
Variabel yang dideklarasikan oleh sebuah class adalah property-nya, yang juga disebut variabel anggota: data yang dibawa setiap object. Deklarasikan variabel tersebut di bagian atas class, masing-masing dengan tipe dan nilai awal:
# 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] = []Property yang dideklarasikan tanpa nilai dimulai dengan nilai default sesuai tipe datanya: 0 untuk int, "" untuk String, false untuk bool, dan array kosong untuk Array[String].
Di luar class, kamu membaca dan mengubah property dengan titik. Di dalam method class, kamu menggunakan namanya:
var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]Setiap object mendapatkan salinannya sendiri untuk setiap property, termasuk array: [] membuat array kosong baru untuk setiap pemain, sehingga inventaris pemain lain tetap kosong.
Tipe data diperiksa: p.level = "max" adalah error yang dilaporkan sebelum program dijalankan, karena level menyimpan nilai int.
Tantangan
MudahLengkapi class Player di player.gd. Deklarasikan property berikut:
player_name, sebuahStringyang dimulai dengan"Hero"level, sebuahintyang dimulai dengan1hp, sebuahintyang dimulai dengan100inventory, sebuahArray[String]yang dimulai dalam keadaan kosong
Lalu lengkapi method describe(). Method ini mengembalikan NAME (level LEVEL, HP hp): ITEMS, dengan ITEMS berupa isi inventory yang digabungkan dengan ", ", atau no items jika inventory kosong.
Kode yang disediakan membaca nama untuk satu pemain, lalu jumlah perintah yang akan diberikan, kemudian perintah-perintah tersebut: hit AMOUNT, item NAME atau level. Kode itu mengubah property pemain secara langsung, lalu mencetak describe() untuk pemain tersebut dan untuk pemain kedua yang tidak pernah diubah. Untuk Ada dan perintah hit 30, item sword, level dan item shield, kode itu mencetak:
Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no itemsTulis kodemu di player.gd. main.gd berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
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())
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan PenggunaLatihan sendiri: Compiler GDScript online