الحلقات المتداخلة مع المصفوفات ثنائية الأبعاد
جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 14 من 78.
لزيارة كل خلية في مصفوفة ثنائية الأبعاد، ضع حلقة داخل حلقة أخرى. تمرّ الحلقة الخارجية على الصفوف، بينما تمرّ الحلقة الداخلية على خلايا الصف الحالي:
var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
for cell in row:
total += cell
print(total) # 21عندما تحتاج إلى موضع كل خلية، كرّر المرور على الفهارس. يمثّل r فهرس الصف، ويمثّل c فهرس العمود، وتستخدم الحلقة الداخلية grid[r].size()، وهو طول الصف الحالي:
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]]إن إسناد قيمة إلى cell داخل حلقة for cell in row لا يغيّر الشبكة، لأن cell يحتوي على نسخة من الرقم. غيّر الخلايا باستخدام فهارسها، كما سبق.
تُنشئ الحلقات المتداخلة شبكةً أيضًا. أنشئ صفًا جديدًا داخل الحلقة الخارجية، واملأه داخل الحلقة الداخلية، ثم أضِفه:
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.
....يجب إنشاء الصف داخل الحلقة الخارجية. تُشارَك المصفوفة ولا تُنسخ عند إلحاقها: إذا ألحقت الصف نفسه row ثلاث مرات، فستكون الصفوف الثلاثة مصفوفة واحدة، وسيضع town[1][2] = "P" حرف P في كل صف.
التحدي
سهلارسم خريطة بلدة. يقرأ البرنامج أربعة أعداد صحيحة، عددًا واحدًا في كل سطر: عدد الصفوف، وعدد الأعمدة، وصف اللاعب وعمود اللاعب. يكون موقع اللاعب دائمًا داخل الخريطة.
- أنشئ
grid، وهي مصفوفة ثنائية الأبعاد بهذا العدد من الصفوف والأعمدة، حيث تحتوي كل خلية على".". استخدم حلقات متداخلة، وأنشئ مصفوفة صف جديدة لكل صف. - عيّن الخلية الموجودة في موقع اللاعب إلى
"P". - اطبع الخريطة، صفًا واحدًا في كل سطر، من دون مسافات بين الخلايا.
بالنسبة إلى المدخلات 3 و4 و1 و2، يكون الناتج:
....
..P.
....جرّب بنفسك
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 := []
# أنشئ الشبكة باستخدام حلقات متداخلة
# ضع اللاعب على الخريطة
# اطبع الخريطة
pass
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفّق التنفيذ
1السلاسل النصية بالتفصيل
أساليب السلاسل النصيةالبحث داخل السلاسل النصيةالاستبدال وإزالة المسافات الطرفيةالتقسيم والدمجمراجعة - التحقق من اسم المستخدم4القواميس، الجزء الثاني
القواميس المتداخلةمصفوفات من القواميسدمج القواميسنسخ القواميسمراجعة - عدّ التكرارات2اتخاذ القرارات المتقدم
المطابقة باستخدام المتغيراتشروط المطابقةأنماط المصفوفاتأنماط القواميسالتحقق من العضويةمراجعة - محلل الأوامر5تطبيق دفتر جهات الاتصال
عرض القائمةإضافة جهة اتصال8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادالمصفوفات المتعرجةأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة - لوحة اللعبة6المجموعات باستخدام القواميس
ما هي المجموعة؟القاموس كمجموعةالإضافة والإزالةالاتحاد والتقاطعفرق المجموعاتمراجعة - إزالة العناصر المكررة9تجميع البيانات المتقدم
جمع القيمإيجاد الحد الأدنى والحد الأقصىالترتيب المخصصمراجعة - أداة ترتيب القواميستدرّب بنفسك: مترجم GDScript عبر الإنترنت