לולאות מקוננות עם מערכים דו־ממדיים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמיד3מערכים רב־ממדיים
יסודות המערכים הדו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום – מערכים דו־ממדייםמערכים משונניםתבניות נפוצות במערכים דו־ממדייםסיכום – לוח משחקתרגלו בעצמכם: קומפיילר GDScript אונליין