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

الحلقات المتداخلة مع المصفوفات ثنائية الأبعاد

جزء من قسم المنطق وتدفّق التنفيذ في رحلة 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 في كل صف.

challenge icon

التحدي

سهل

ارسم خريطة بلدة. يقرأ البرنامج أربعة أعداد صحيحة، عددًا واحدًا في كل سطر: عدد الصفوف، وعدد الأعمدة، وصف اللاعب وعمود اللاعب. يكون موقع اللاعب دائمًا داخل الخريطة.

  1. أنشئ grid، وهي مصفوفة ثنائية الأبعاد بهذا العدد من الصفوف والأعمدة، حيث تحتوي كل خلية على ".". استخدم حلقات متداخلة، وأنشئ مصفوفة صف جديدة لكل صف.
  2. عيّن الخلية الموجودة في موقع اللاعب إلى "P".
  3. اطبع الخريطة، صفًا واحدًا في كل سطر، من دون مسافات بين الخلايا.

بالنسبة إلى المدخلات 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
quiz iconاختبر نفسك

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

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

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