Циклы в GDScript выполняются либо с использованием цикла for, либо с использованием цикла while.
Цикл for
Цикл for устанавливает индексное значение из диапазона чисел или путем итерации по объекту, такому как массив или словарь.
Функция range позволяет определить диапазон целых чисел. Начальное число по умолчанию равно 0. Верхняя граница на единицу больше максимального значения, так как значения индекса обычно начинаются с нуля, а не с единицы.
Мы также можем указать положительное или отрицательное значение шага, значение по умолчанию — 1.
Тело цикла for выделено отступами.
Вы можете завершить цикл в любое время с помощью оператора break. Это может использоваться для выхода из цикла, используемого для поиска элемента внутри коллекции или текстового документа.
Чтобы перейти к концу блока операторов, мы можем использовать оператор continue.
Вот примеры кода, демонстрирующие различные способы реализации цикла for:
# loop for n = 0 to 7
for n in 8:
print(n)
# Using range
for n in range(8):
print(n)
# loop for n = 10 to 12
for n in range(10,13):
print(n)
# count down from 10 to 1
for n in range(10,0,-1):
print(n)
# loop for n = 2,4,6,8 in steps of 2
for n in range(2,9,2):
print(n)
# Iterate over string (array of characters)
for ch in "Hello":
print(ch)
# Iterate over an array of numbers
for x in [3,6,8,9]:
print(x)
# Iterate over items of a dictionary
var dict = { "x": 1, "y": 2, "z": 3 }
for key in dict:
# Insert the key and value into a text string
print("index: %s, value: %d" % [key, dict[key]])
# Using continue and break statements
for n in 9:
# Skip numbers below 3
if n < 3:
continue
# Break out of the loop for numbers above 5
if n > 5:
break
print(n)
Цикл while
Цикл while оценивает логическое выражение, чтобы решить, продолжать ли выполнение цикла или выйти из него. Как и в предыдущем случае, мы можем выйти из цикла с использованием оператора break или перейти к концу блока операторов с помощью оператора continue.
Вот пример кода:
var fuel = 1000
var speed = 0
while fuel > 0:
speed += 0.12
fuel -= 1
print("Top speed = ", speed)