Menu
CoddyTech

Métodos

Parte de la sección Programación orientada a objetos del Journey de GDScript de Coddy. Lección 5 de 65.

Una función declarada dentro de una clase es un método: algo que los objetos de la clase pueden hacer. Como cualquier función, un método puede recibir parámetros y devolver un valor, y puede leer y cambiar las variables del objeto:

# score_board.gd
class_name ScoreBoard
extends RefCounted

var points: int = 0

func greet() -> void:
	print("Scoreboard ready")

func add(amount: int) -> void:
	points += amount

func doubled() -> int:
	return points * 2

func add_bonus() -> int:
	add(10)
	return points

Llama a un método de un objeto usando un punto y pasa los argumentos entre paréntesis:

var board := ScoreBoard.new()
board.greet() # Marcador listo
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

Dentro de la clase, un método llama a otro método del mismo objeto por su nombre: add(10) en add_bonus() significa self.add(10).

Un método declarado con -> void no devuelve nada, y uno declarado con -> int debe devolver un int. Cada llamada funciona en su propio objeto: board.add(5) cambia board.points y ningún otro marcador.

La llamada debe coincidir con la declaración: board.add() sin un argumento es un error que se informa antes de que se ejecute el programa.

challenge icon

Desafío

Fácil

Completa los métodos de la clase BankAccount en bank_account.gd. La cuenta guarda su dinero en la variable balance, que empieza en 0.

  • deposit(amount) suma amount al saldo
  • withdraw(amount) resta amount y devuelve true. Cuando amount es mayor que el saldo, no cambia nada y devuelve false
  • get_balance() devuelve el saldo

El código proporcionado lee cuántos comandos siguen y después lee un comando por línea: deposit AMOUNT o withdraw AMOUNT. Imprime una línea por cada comando y el saldo final. Para deposit 50 y withdraw 80, imprime:

Deposited 50
Not enough money for 80
Current balance: $50

Tu código va en bank_account.gd. main.gd contiene el código proporcionado para la entrada y salida, y no se puede editar.

Pruébalo tú mismo

extends Node

func _ready():
	# Código de entrada/salida proporcionado: mantenlo tal como está
	var account := BankAccount.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		var amount := int(parts[1])
		if parts[0] == "deposit":
			account.deposit(amount)
			print("Deposited %d" % amount)
		elif account.withdraw(amount):
			print("Withdrew %d" % amount)
		else:
			print("Not enough money for %d" % amount)
	print("Current balance: $%d" % account.get_balance())
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de GDScript online