Menu
CoddyTech

Enumの定義

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 38/78。

enum 宣言は、キーワード enum、名前、および波括弧内にカンマで区切って記述する選択肢で構成されます。Godot のスタイルガイドでは、名前に PascalCase、選択肢に CONSTANT_CASE を使用します:

enum Direction { NORTH, EAST, SOUTH, WEST }

長い列挙型では、選択肢を1行に1つずつ記述できます。最後の選択肢の後にカンマを付けてもかまいません:

enum Weapon {
	SWORD,
	BOW,
	STAFF,
}

=を使ってオプションの値を指定できます。値を指定しないオプションには、その直前のオプションの値に1を加えた値が設定されます。

enum Difficulty { EASY = 1, NORMAL, HARD, NIGHTMARE = 10 }
# EASY = 1, NORMAL = 2, HARD = 3, NIGHTMARE = 10

enumも型です。enumで宣言された変数は、その選択肢のいずれかを保持します:

var level: Difficulty = Difficulty.HARD
print(level) # 3
print(level * 50) # 150

スクリプトでは、それぞれに固有の名前を持つ複数の列挙型を宣言できます。enum { LEFT, RIGHT }のように名前を省略すると、選択肢はスクリプトの定数になり、接頭辞を付けずにLEFTと記述します。

challenge icon

チャレンジ

簡単

このプログラムは敵の基本ダメージ(整数)を読み取ります。難易度が高いほど敵の攻撃力も上がり、ダメージは基本ダメージに難易度の値を掛けたものになります。

  1. スクリプトの最上位で、選択肢として Difficulty という名前の列挙型を宣言します。選択肢は EASY(値は 1)、NORMAL、HARD、NIGHTMARE(値は 10)です。NORMAL と HARD には値を指定せず、EASY の値から順に増えるようにします。
  2. 列挙型の選択肢を計算に使って、各難易度のダメージを1行ずつ出力します。

入力が 12 の場合、出力は次のとおりです。

EASY: 12
NORMAL: 24
HARD: 36
NIGHTMARE: 120

自分で試してみよう

extends Node

# ここでDifficulty列挙型を宣言する

func _ready():
	var base_damage := int(OS.read_string_from_stdin())
	# 各難易度のダメージを表示する
	pass
quiz icon腕試し

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

ロジックとフローのすべてのレッスン

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