Menu
CoddyTech

Propriétés

Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 6 sur 65.

Les variables qu’une classe déclare sont ses propriétés (également appelées variables membres) : les données que chaque objet contient. Déclare-les en haut de la classe, chacune avec un type et une valeur initiale :

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

Une propriété déclarée sans valeur prend la valeur par défaut de son type : 0 pour int, "" pour String, false pour bool et un tableau vide pour Array[String].

En dehors de la classe, tu lis et modifies une propriété avec un point. Dans les méthodes de la classe, tu utilises son nom :

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

Chaque objet reçoit sa propre copie de chaque propriété, y compris les tableaux : [] crée un nouveau tableau vide pour chaque joueur, ainsi l’inventaire des autres joueurs reste vide.

Le type est vérifié : p.level = "max" est une erreur signalée avant l’exécution du programme, car level contient un int.

challenge icon

Défi

Facile

Complète la classe Player dans player.gd. Déclare ces propriétés :

  • player_name, un String initialisé à "Hero"
  • level, un int initialisé à 1
  • hp, un int initialisé à 100
  • inventory, un Array[String] initialisé à vide

Complète ensuite la méthode describe(). Elle renvoie NAME (level LEVEL, HP hp): ITEMS, où ITEMS correspond à l'inventaire dont les éléments sont joints avec ", ", ou à no items lorsque l'inventaire est vide.

Le code fourni lit un nom pour un joueur, puis le nombre de commandes qui suivent, puis les commandes : hit AMOUNT, item NAME ou level. Il modifie directement les propriétés du joueur et affiche finalement describe() pour ce joueur et pour un deuxième joueur qu'il n'a jamais modifié. Pour Ada et les commandes hit 30, item sword, level et item shield, il affiche :

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

Écris ton code dans player.gd. main.gd contient le code fourni pour les entrées/sorties et ne peut pas être modifié.

Essayez vous-même

extends Node

func _ready():
	# Code d'entrée/sortie fourni : conservez-le tel quel
	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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur GDScript en ligne