Menu
CoddyTech

メソッド

CoddyのGDScriptジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 5/65。

クラス内で宣言された関数はメソッドです。つまり、そのクラスのオブジェクトができることです。ほかの関数と同様に、メソッドはパラメーターを受け取り、値を返すことができます。また、オブジェクトの変数を読み取ったり変更したりできます。

# 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

ドットを使ってオブジェクトのメソッドを呼び出し、括弧内に引数を渡します。

var board := ScoreBoard.new()
board.greet() # スコアボードの準備完了
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

クラス内では、メソッドはその名前を使って同じオブジェクトの別のメソッドを呼び出します。add_bonus()内のadd(10)は、self.add(10)を意味します。

-> voidで宣言されたメソッドは何も返さず、-> intで宣言されたメソッドはintを返す必要があります。それぞれの呼び出しは独立したオブジェクトに対して動作します。board.add(5)はboard.pointsを変更し、ほかのスコアボードは変更しません。

呼び出しは宣言と一致している必要があります。引数なしの board.add() は、プログラムの実行前に報告されるエラーです。

challenge icon

チャレンジ

簡単

bank_account.gd 内のクラス BankAccount のメソッドを完成させてください。口座のお金は変数 balance に保持され、初期値は 0 です。

  • deposit(amount) は残高に amount を加算します
  • withdraw(amount) は amount を差し引き、true を返します。amount が残高を超える場合は、何も変更せず false を返します
  • get_balance() は残高を返します

提供されたコードは、後に続くコマンドの数を読み取ってから、1行につき1つのコマンドを読み取ります。コマンドは deposit AMOUNT または withdraw AMOUNT です。各コマンドに対して1行と、最終残高を出力します。deposit 50 と withdraw 80 に対して、次のように出力します。

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

コードは bank_account.gd に記述してください。main.gd には提供された入出力コードがあり、編集できません。

自分で試してみよう

extends Node

func _ready():
	# 提供された入出力コード:そのままにしてください
	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 icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ