Menu
CoddyTech

לולאות מקוננות עם מערכים דו־ממדיים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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 אונליין