2B Dizilerle İç İçe Döngüler
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 14 / 78.
2B dizinin her hücresini ziyaret etmek için bir döngüyü diğerinin içine yerleştir. Dış döngü satırları, iç döngü ise geçerli satırın hücrelerini dolaşır:
var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
for cell in row:
total += cell
print(total) # 21Her hücrenin konumuna ihtiyaç duyduğunda, indisler üzerinde döngü kur. r satır indisi, c sütun indisi ve iç döngü, geçerli satırın uzunluğu olan grid[r].size() değerini kullanır:
for r in range(grid.size()):
for c in range(grid[r].size()):
grid[r][c] *= 10
print(grid) # [[10, 20, 30], [40, 50, 60]]for cell in row döngüsünde cell’e değer atamak ızgarayı değiştirmez, çünkü cell sayının bir kopyasını tutar. Hücreleri yukarıda olduğu gibi indeksleri aracılığıyla değiştirin.
İç içe döngüler de bir ızgara oluşturur. Dış döngünün içinde yeni bir satır oluşturun, iç döngüde doldurun, ardından ekleyin:
var town := []
for r in range(3):
var row := []
for c in range(4):
row.append(".")
town.append(row)
town[1][2] = "P"
for row in town:
print("".join(row))....
..P.
....Satır, dış döngünün içinde oluşturulmalıdır. Bir diziyi eklediğinizde dizi paylaşılır, kopyalanmaz: aynı row dizisini üç kez eklerseniz üç satır da aynı dizidir ve town[1][2] = "P" her satıra bir P koyar.
Görev
KolayBir kasabanın haritasını çiz. Program satır başına bir tane olmak üzere dört tam sayı okur: satır sayısı, sütun sayısı, oyuncunun satırı ve oyuncunun sütunu. Oyuncunun konumu her zaman haritanın içindedir.
grid'i, belirtilen sayıda satır ve sütuna sahip, her hücresi"."olan 2 boyutlu bir dizi olarak oluştur. İç içe döngüler kullan ve her satır için yeni bir satır dizisi oluştur.- Oyuncunun konumundaki hücreyi
"P"olarak ayarla. - Haritayı, hücreler arasında boşluk olmadan, satır başına bir satır olacak şekilde yazdır.
3, 4, 1 ve 2 girdileri için çıktı şöyledir:
....
..P.
....Kendin dene
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
var player_row := int(OS.read_string_from_stdin())
var player_col := int(OS.read_string_from_stdin())
var grid := []
# İç içe döngülerle ızgarayı oluştur
# Oyuncuyu haritaya yerleştir
# Haritayı yazdır
pass
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi