Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Lengkapi class Player di player.gd. Deklarasikan property berikut:

  • player_name, sebuah String yang dimulai dengan "Hero"
  • level, sebuah int yang dimulai dengan 1
  • hp, sebuah int yang dimulai dengan 100
  • inventory, sebuah Array[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 items

Tulis 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())
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler GDScript online