Menu
CoddyTech

속성

Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 6번째.

클래스가 선언하는 변수는 클래스의 속성(멤버 변수라고도 함)입니다. 모든 객체가 지니는 데이터입니다. 클래스의 맨 위에 각 변수의 타입과 시작값을 지정해 선언하세요:

# 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] = []

값 없이 선언된 속성은 해당 타입의 기본값으로 시작합니다. int는 0, String은 "", bool은 false, Array[String]은 빈 배열입니다.

클래스 밖에서는 점을 사용해 속성을 읽고 변경합니다. 클래스의 메서드 안에서는 속성 이름을 사용합니다:

var p := Player.new()
p.level += 1
p.inventory.append("sword")
print(p.level) # 2
print(p.inventory) # ["sword"]

배열을 포함해 모든 객체는 각 속성의 사본을 하나씩 갖습니다. []는 각 플레이어마다 새로운 빈 배열을 생성하므로 다른 플레이어의 인벤토리는 비어 있습니다.

타입이 검사됩니다. p.level = "max"는 프로그램이 실행되기 전에 보고되는 오류입니다. level은 int를 담고 있기 때문입니다.

challenge icon

챌린지

쉬움

player.gd에서 Player 클래스를 완성하세요. 다음 속성을 선언하세요:

  • player_name, "Hero"로 시작하는 String
  • level, 1로 시작하는 int
  • hp, 100으로 시작하는 int
  • inventory, 비어 있는 상태로 시작하는 Array[String]

그런 다음 describe() 메서드를 완성하세요. 이 메서드는 NAME (level LEVEL, HP hp): ITEMS를 반환합니다. 여기서 ITEMS는 인벤토리 항목을 ", "로 결합한 문자열이며, 인벤토리가 비어 있으면 no items입니다.

제공된 코드는 한 플레이어의 이름, 이어서 명령의 개수, 그리고 명령을 읽습니다: hit AMOUNT, item NAME 또는 level. 코드는 플레이어의 속성을 직접 변경한 다음, 마지막으로 해당 플레이어와 한 번도 변경되지 않은 두 번째 플레이어에 대해 describe()를 출력합니다. Ada와 명령 hit 30, item sword, level, item shield를 입력하면 다음을 출력합니다:

Ada (level 2, 70 hp): sword, shield
Hero (level 1, 100 hp): no items

코드는 player.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

extends Node

func _ready():
	# 제공된 입출력 코드: 그대로 유지하세요
	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 icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러