Menu
CoddyTech

גישה לאיברים במערך דו־ממדי

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