Menu
CoddyTech

Ö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.

challenge icon

Görev

Kolay

player.gd içindeki Player sınıfını tamamla. Şu özellikleri tanımla:

  • player_name, başlangıç değeri "Hero" olan bir String
  • level, başlangıç değeri 1 olan bir int
  • hp, başlangıç değeri 100 olan bir int
  • inventory, başlangıçta boş olan bir Array[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 items

Kodunu 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())
quiz iconKendini test et

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

Kendi başına pratik yap: Online GDScript derleyicisi