[Godot] 降順(逆順、後ろから前へ)でforループする

Godot公式サイトへのボタン
完全無料の高機能ゲームエンジン「Godot」の解説を書いています。
公式サイトはこちら公式ドキュメントはこちら当サイトのGodot記事一覧はこちら

今日はGodotで逆順(後ろから前へ)でforループする方法を探ります。

Godotのforループの書き方はいくつもあり、配列などに適用して抽出するイテレーションも利用可能です。

記事中の商品/サービス

基本形

最も単純なループは次の通り。

for i in range(5):
    print(i)

結果

0
1
2
3
4

レンジ最後の数字(上記なら5)は出てこないことに注意。range内の数値は、i < 5 として認識される。i <= 5 ではない。

ステップ数を指定したループ

ステップ数を指定したループも可能。

for i in range(0, 10, 2):
    print(i)

結果

0
2
4
6
8

ステップ数を足された数でループが回っている。

逆順のループ

いよいよ逆順のループです。

逆順は「最大数から指定数値を引く」という考え方になっています。ステップ数を指定したループと同じ形になり、ステップ数には「引きたい数」を指定する形となります。第3引数の -1 が重要です。

for i in range(5, 0, -1):
    print(i)

結果

5
4
3
2
1

この場合も最後の数字(0)が出てこないことに注意。

ステップに正数を指定した場合何も指定しなかった場合、数字を足そうとしてしまいますので、range(5, 0) とした場合、ループは1度も回りません。

数値の上下を自動判断してループしてくれるわけではありません。

イテレーションでの逆順

arrayに対して逆順のイテレーションをしたい場合、単純なfor文では不可能です。

大きく2つの手段があります。

  • インデックス数字を逆順に回し、arrayを参照する
  • 逆順のarrayを生成し、それをイテレーションする

逆順のarrayを生成するサンプル。

var array = ["A", "B", "C", "D"]
var array_2 = []
array_2 = array.duplicate() #コピー
array_2.invert() #逆順に並べ替え
print(array_2)

結果

[D, C, B, A]

 

コメント