Menu
CoddyTech
flag Ar iconالعربيةdown icon

الوصول إلى عناصر المصفوفة ثنائية الأبعاد

جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 13 من 78.

للوصول إلى خلية واحدة في مصفوفة ثنائية الأبعاد، استخدم فهرسين: الأول يحدّد الصف، والثاني يحدّد العمود داخل ذلك الصف. يبدأ كلاهما عند 0.

var level := [
	[1, 1, 1, 1],
	[1, 0, 2, 1],
	[1, 1, 1, 1]
]
print(level[1][2]) # 2 (الصف 1، العمود 2)
print(level[0][0]) # 1

يُرجع level[1] الصف [1, 0, 2, 1]، ثم يختار [2] الفهرس 2 من ذلك الصف. تُعَدّ الفهارس السالبة من النهاية، كما هو الحال في أي مصفوفة: level[-1][-1] هي الخلية السفلية اليمنى.

أسنِد قيمةً إلى خلية لتغييرها. عندما يلتقط اللاعب العملة، يصبح بلاطها أرضية:

level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]

الفهرس الواقع خارج الشبكة خطأ يوقف البرنامج: يفشل level[3][0] لأن الصفوف تمتد من 0 إلى 2. عندما تأتي الفهارس من إدخال أو من عملية حسابية، فتحقّق منها أولًا بمقارنتها بحجم الشبكة:

var row := 2
var col := 5
if row >= 0 and row < level.size() and col >= 0 and col < level[row].size():
	print(level[row][col])
else:
	print("Outside the map")

يطبع هذا Outside the map، لأن العمود 5 غير موجود. تتوقف and عند أول شرط تكون قيمته false، لذا لا تتم قراءة level[row] إلا إذا كان الصف موجودًا.

challenge icon

التحدي

سهل

اكتب دالة باسم get_tile لها ثلاث معاملات:

  1. grid: مصفوفة ثنائية الأبعاد من الأعداد الصحيحة (صرّح عنها على النحو grid: Array)
  2. row: فهرس الصف
  3. col: فهرس العمود

تعيد القيمة الموجودة عند ذلك الصف والعمود. إذا كان row أو col خارج حدود الشبكة (أقل من 0، أو ليس أقل من عدد الصفوف أو الأعمدة)، فستعيد -1 بدلًا من ذلك. تُعد الفهارس السالبة خارج الحدود.

على سبيل المثال، تعيد get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) القيمة 6، وتعيد get_tile([[1, 2], [3, 4]], 2, 1) القيمة -1.

تستدعي الاختبارات get_tile() بنفسها وتتحقق من القيمة التي تعيدها. لا تستدعِها ولا تطبع أي شيء.

جرّب بنفسك

func get_tile(grid: Array, row: int, col: int):
	# اكتب الكود هنا
	pass
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفّق التنفيذ

تدرّب بنفسك: مترجم GDScript عبر الإنترنت