追加と削除
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 33/78。
メンバーを追加するには、そのキーにtrueを割り当てます。すでにセットに含まれているメンバーを追加しても何も変わらないため、新しいメンバーだったかどうかを知る必要がある場合は、まずhas()で確認します:
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")メンバーを削除するには、erase()を呼び出します。メンバーが削除された場合はtrueを、セットに存在しなかった場合はfalseを返します。存在しないメンバーを指定してもエラーにはなりません。
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }erase()はブール値を返すため、条件として直接使用できます。if inventory.erase("map"):は、"map"がメンバーだった場合にのみ、そのブロックを実行します。
clear()はすべてのメンバーを削除し、size()はメンバーの数を数えます。また、メンバーがないセットではis_empty()はtrueになります。
チャレンジ
簡単プログラムは、行が done になるまで、1 行に 1 つずつコマンドを読み込みます。各コマンドは add ITEM または remove ITEM です。スターターコードでは、各コマンドはすでに action と item に分割されています。
addの場合: アイテムが新しければ、セットinventoryに追加してAdded ITEMと出力します。そうでなければAlready have ITEMと出力します。removeの場合: アイテムがセットに含まれていれば、削除してRemoved ITEMと出力します。そうでなければNo ITEM to removeと出力します。
done の後、Inventory: に続けて、メンバーを , で結合したものを出力します。セットが空の場合は Inventory: empty を出力します。入力が次の場合:
add torch
add rope
add torch
remove map
remove rope
done出力は次のとおりです:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torch自分で試してみよう
extends Node
func _ready():
var inventory := {}
while true:
var command := OS.read_string_from_stdin()
if command == "done":
break
var parts := command.split(" ")
var action := parts[0]
var item := parts[1]
# アイテムを追加または削除する
# インベントリを表示する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ