1 00:00:01,271 --> 00:00:03,741 עד כה, ראינו איך ליצור מערך ואיך לגשת אליו. 2 00:00:03,741 --> 00:00:12,859 אבל, בדיוק כמו משתנים אחרים, אחד הדברים המגניבים לגבי מערכים הוא היכולת לשנות אותם באופן דינמי בזמן שהתוכנית רצה. 3 00:00:12,859 --> 00:00:15,805 אוקיי, תנו לי רגע להראות לכם למה אני מתכוונת. 4 00:00:15,805 --> 00:00:21,172 יש לנו כאן תוכנית שמציגה את Hopper שמחזיק כמה בלונים - ממש חמוד. 5 00:00:21,172 --> 00:00:29,397 איך שזה עובד זה שיש לנו מערך של מיקומים xPositions שיש בו שני מספרים, שאומרים היכן אנחנו רוצים להציג את הבלונים. 6 00:00:29,397 --> 00:00:35,471 ואז כאן למטה יש לנו לולאה, והלולאה הזו עוברת על כל האיברים של המערך 7 00:00:35,471 --> 00:00:46,810 ועבור כל אחד מהם, היא מציררת קו ממיקום ה-x הזה ליד של Hopper, ואז מציירת אליפסה במיקום ה-x הזה בגודל 30x40 פיקסלים, וזה הבלון שלנו. 8 00:00:46,810 --> 00:00:58,343 אוקיי, מגניב. עכשיו שאנו רואים איך זה עובד, אנחנו יודעים שאם נרצה שעוד בלון יופיע, אנחנו יכולים פשוט להוסיף עוד מספר למערך. למשל 300. 9 00:00:58,343 --> 00:01:02,063 יפה. עכשיו יש לנו שלושה בלונים, ו-Hopper שמח. 10 00:01:02,063 --> 00:01:10,932 אבל נניח שאנחנו רוצים לתת למשתמש שלא יודע לתכנת את היכולת להוסיף בלונים חדשים. 11 00:01:10,932 --> 00:01:17,801 אז רצינו לתת את התוכנית למשתמש ולומר לו - "היי, אתה יכול ללחוץ איפה שאתה רוצה את הבלון, והבלון יופיע." 12 00:01:17,801 --> 00:01:20,688 זה יהיה מגניב, לא? אני חושבת שכן. 13 00:01:20,688 --> 00:01:26,640 אז, איך נעשה את זה? אנחנו רוצים שהתוכנית שלנו תשתנה עם הזמן, נכון? 14 00:01:26,640 --> 00:01:30,278 בכל פעם שהמשתמש לוחץ, בלון יופיע במקום שהוא לחץ. 15 00:01:30,278 --> 00:01:37,637 נתחיל בלהזיז את כל הקוד הזה לתוך פונקציית ציור (draw) כדי שיהיה קל לשנות את זה עם הזמן. 16 00:01:37,637 --> 00:01:43,185 נזיז את זה למטה ונוסיף הזחה ימינה. אוקיי, נהדר. 17 00:01:43,185 --> 00:01:48,405 עכשיו נרצה לבדוק, האם המשתמש לוחץ על העכבר ברגע זה? 18 00:01:48,405 --> 00:01:55,339 אנחנו יכולים לעשות זאת עם תנאי if. אז נרשום if (mouseIsPressed), ואז נעשה משהו. 19 00:01:55,339 --> 00:02:01,176 מה נעשה? אם העכבר לחוץ, אנחנו רוצים איכשהו להוסיף מספר למערך הזה. 20 00:02:01,176 --> 00:02:04,232 בואו נחזיר אותו למצב שיכיל רק שני איברים. אוקיי. 21 00:02:04,232 --> 00:02:10,464 אנחנו רוצים להוסיף מספר למערך הזה איכשהו. אני אראה לכם דרך אחת שנוכל לעשות זאת. 22 00:02:10,464 --> 00:02:18,508 נרשום xPositions[2] = mouseX; 23 00:02:18,508 --> 00:02:21,681 אוקיי, תנו לי רק להראות לכם שזה עובד 24 00:02:21,681 --> 00:02:26,640 לחצתי, והנה יש לי בלון. אז מה זה עשה? 25 00:02:26,640 --> 00:02:38,236 זה אומר שאנחנו מסתכלים על המערך, ומוצאים את האיבר במקום ה-2, ותזכרו שזה האיבר השלישי כי המערכים שלנו מתחילים מאפס. 26 00:02:38,236 --> 00:02:41,742 אבל אתם רואים שאין איבר שלישי, נכון? אין שום דבר במקום הזה. 27 00:02:41,742 --> 00:02:45,897 אז כתוב כאן שנמצא את המקום הזה, ונשים בו את mouseX. 28 00:02:45,897 --> 00:02:51,358 לא היה שם כלום, ועכשיו במקום כלום זה יכיל את mouseX. 29 00:02:51,358 --> 00:03:00,130 עכשיו המערך שלנו מכיל שלושה פריטים, ולולאת ה-for הזו כאן למטה עוברת עליו, ומציירת גם את הבלון השלישי הזה 30 00:03:00,130 --> 00:03:04,027 די מגניב, עכשיו אני אלחץ עוד ונראה איך זה עובד. 31 00:03:04,027 --> 00:03:10,690 אתם רואים שבכל פעם שאני לוחצת, זה מצייר את הבלון השלישי במקום שלחצתי עם העכבר 32 00:03:10,690 --> 00:03:18,938 זה כי אנחנו כל הזמן דורסים את המקום ה-2, הדבר שנמצא באינדקס 2. 33 00:03:18,938 --> 00:03:22,898 אנחנו כל הזמן דורסים אותו עם ה-mouseX הנוכחי. 34 00:03:22,898 --> 00:03:34,574 אז תמיד יהיו לנו רק שלושה בלונים כי יש לנו את זה במקום ה-0, את זה במקום ה-1, ואנחנו תמיד משנים את המקום ה-2. אוקיי? 35 00:03:34,574 --> 00:03:40,235 זה מגניב, אבל מה שאנחנו באמת רוצים זה לתת למשתמש ליצור המון בלונים, נכון? 36 00:03:40,235 --> 00:03:43,524 כך שבכל פעם שהוא לוחץ, יש בלון חדש. 37 00:03:43,524 --> 00:03:50,852 זה אומר שאנחנו צריכים כל הזמן להגדיל את האינדקס של האיבר במערך שאנחנו שומרים בו את המיקום. 38 00:03:50,852 --> 00:03:56,106 אנחנו לא רוצים שהוא יהיה 2 כל הזמן, אנחנו רוצים שהוא יהיה 2, ואז 3, ואחר כך 4, ואז 5, ואז 6, וכן הלאה. 39 00:03:56,106 --> 00:04:01,019 אנחנו יכולים לעשות את זה באמצעות משתנה סופר - counter. נרשום newInd = 2; 40 00:04:01,019 --> 00:04:05,523 זה מה שהוא יתחיל איתו, ואז כאן נרשום newInd במקום 2. 41 00:04:05,523 --> 00:04:10,270 ואז מה שאנחנו באמת רוצים לעשות זה לרשום newInd++ 42 00:04:10,270 --> 00:04:16,231 כלומר בכל פעם נוסיף לו 1. הוא יתחיל בתור 2, ואז יהפוך ל-3, ואז ל-4. 43 00:04:16,231 --> 00:04:18,473 בכל פעם שלוחצים על העכבר, האינדקס יגדל. בואו ננסה את זה. 44 00:04:18,473 --> 00:04:22,009 יופי! המון בלונים. מסיבת בלונים! 45 00:04:22,009 --> 00:04:32,108 זה מגניב, נכון? אבל זו לא הדרך הכי טובה לעשות את זה, כי מסתבר שלהוסיף פריטים למערך זה משהו שנרצה לעשות הרבה 46 00:04:32,108 --> 00:04:35,023 כך שיש לנו דרך פשוטה יותר לעשות זאת. 47 00:04:35,023 --> 00:04:42,768 תנו לי רק למחוק את הדברים שעשינו. אוקיי, אנחנו לא צריכים את זה יותר. נהפוך את להערה. 48 00:04:42,768 --> 00:04:50,996 אוקיי, אז עושים את זה כך - xPositions.push ואז mouseX. 49 00:04:50,996 --> 00:04:56,573 אז מה שעשינו כאן זה לקרוא למתודה push על המערך xPositions. 50 00:04:56,573 --> 00:05:05,232 כלומר אנחנו קוראים לסוג של פקודה על המערך. אנחנו אומרים למערך, "היי, תכניס את הערך החדש הזה, שנמצא ב-mouseX, תכניס אותו בסוף המערך". 51 00:05:05,232 --> 00:05:12,467 בכל פעם שקוראים לקוד הזה, בכל פעם שהמשתמש לוחץ על העכבר, אנחנו בודקים מההמיקום של העכבר mouseX ונוסיף את המספר לסוף המערך. 52 00:05:12,467 --> 00:05:16,768 כך שהמערך אמור לגדול ולגדול ולגדול. בואו נתחיל מחדש וננסה את זה. 53 00:05:16,768 --> 00:05:22,684 יפה, זה עבד! וזה הרבה פחות קוד ממה שהיה לנו קודם. אוקיי? 54 00:05:22,684 --> 00:05:27,630 רוב הזמן, אתם תרצו להשתמש ב-push אם אתם הולכים להוסיף דברים למערך בצורה הזאת. 55 00:05:27,630 --> 00:05:32,182 וזה די מגניב כי אתם יכולים פשוט להגדיל את המערכים עוד ועוד במהלך התוכנית. 56 00:05:32,182 --> 00:05:36,017 למשל כשיש לכם אנימציה או כשיש משתמשים שעושים דברים, אתם יכולים לעשות הרבה יותר. 57 00:05:36,017 --> 00:05:41,295 אז עד עכשיו ראיתם בערך 90% מהדרכים שבהם כנראה תשתמשו במערכים. 58 00:05:41,295 --> 00:05:47,021 אבל יש הרבה דברים אחרים שתוכלו לעשות עם מערכים. אז אם יש לכם שאלות, פשוט שאלו בדיונים. 59 00:05:47,021 --> 00:05:51,000 אבל תוודאו שאתם שולטים היטב בכלים הבסיסיים האלו קודם.