1 00:00:01,737 --> 00:00:07,341 במדריך האחרון שלנו, הראינו לכם כיצד אפשר להנפיש כדור שייקפוץ על הקירות בעזרת הפונקציה draw והצהרות if. 2 00:00:07,341 --> 00:00:08,637 בואו נעבור על זה. 3 00:00:08,637 --> 00:00:12,407 ראשית, הגדרנו כמה משתנים עבור המיקום והמהירות של הכדור. 4 00:00:12,407 --> 00:00:17,240 לאחר מכן, בפונקצית ה-draw, שהיא פונקציה מיוחדת שנקראת שוב ושוב ושוב כשהתוכנה שלכם רצה, 5 00:00:17,240 --> 00:00:20,907 צבענו מחדש את הרקע וציירנו אליפסה על השולחן עבודה 6 00:00:20,907 --> 00:00:27,779 ומיקמנו את האליפסה הזו בהתבסס על המיקום של המשתנים והמהירות ואיך שהם משפיעים אחד על השני. 7 00:00:27,779 --> 00:00:31,195 עכשיו, מבלי להשתמש בהצהרות if, הכדור שלנו פשוט ימשיך לזוז לנצח 8 00:00:31,195 --> 00:00:32,862 או עד שנלחץ על אתחול מחדש. 9 00:00:32,862 --> 00:00:36,364 אז הוספנו שני משפטי if כאן למטה 10 00:00:36,441 --> 00:00:40,605 על מנת לבדוק אם הכדור שלנו קרוב לצד ימין של המסך או לצד שמאל של המסך 11 00:00:40,606 --> 00:00:45,309 ואם כן, אנחנו נשנה את המהירות שלו בצורה חיובית או שלילית כך שהכדור בעצם ייקפוץ חזרה מהקיר. 12 00:00:45,309 --> 00:00:50,071 אז כרגע פשוט יש לנו את הכדור הזה, שקופץ הלוך ושוב לנצח. 13 00:00:50,071 --> 00:00:53,671 אז זה היה די מגניב, ויש עוד הרבה אנימציות מגניבות שאנחנו יכולים לעשות עם זה. 14 00:00:53,671 --> 00:00:57,675 אבל כרגע, אני רוצה להוסיף התערבויות של המשתמש בתוכנה. 15 00:00:57,675 --> 00:01:00,071 כרגע, התוכנה היא כמו תוכנית טלויזיה. 16 00:01:00,071 --> 00:01:04,945 אם תתנו אותה לחבר, והחבר שלכם לא יודע לתכנת, הם לא באמת יוכלו להתערב בתוכנה. 17 00:01:04,945 --> 00:01:07,606 כל מה שהם יוכלו לעשות זה לצפות, שזה מגניב, 18 00:01:07,606 --> 00:01:10,340 אבל יכול להיות הרבה יותר מגניב אם הם היו יכולים לעשות משהו. 19 00:01:10,340 --> 00:01:13,470 אז בואו ניתן למשתמש כמה דרכים לשלוט בה. 20 00:01:13,470 --> 00:01:20,156 זוכרים שמוקדם יותר למדנו על שני משתנים גלובאלים מיוחדים בשם mouseX ו-mouseY? 21 00:01:20,156 --> 00:01:25,972 המשתנים האלו מחזירים ערכים שאומרים לנו מה המיקום הנוכחי של העכבר של המשתמש 22 00:01:25,972 --> 00:01:28,779 והם דרך מעולה לגרום לתוכנית שלנו להיות יותר אינטראקטיבית. 23 00:01:28,779 --> 00:01:31,239 אז בואו נחשוב, איך נוכל להשתמש בהם? 24 00:01:31,239 --> 00:01:34,029 ובכן, נוכל לשים אותם בתוך פונקציית ה-draw איפשהו 25 00:01:34,029 --> 00:01:39,503 בגלל שזה החלק היחיד בתוכנה שנקרא שוב ושוב ושוב. 26 00:01:39,503 --> 00:01:44,551 כל דבר מחוץ ל-draw נקרא רק פעם אחת, כשהתוכנה רצה בפעם הראשונה. 27 00:01:44,551 --> 00:01:48,136 אז זה לא הגיוני להשתמש ב-mouseX וב-mouseY שם 28 00:01:48,136 --> 00:01:51,243 כי למשתמש לא יהיה צ׳אנס להשתמש בזה 29 00:01:51,243 --> 00:01:57,280 בתוך ה-draw, אנחנו מציירים את הגדול במרחק של 200 פיקסלים מהגבול העליון של המסך 30 00:01:57,280 --> 00:02:01,242 מה אם נחליף את ההגדרה הזו עם mouseY? 31 00:02:01,242 --> 00:02:02,739 מכיוון שזהו המיקום על ציר ה-y נכון? 32 00:02:02,739 --> 00:02:08,530 ככה הוא פשוט יוסיף את מיקום ה-y בהתאם לאיפה שנקודת ה-y של המשתמש נמצאת, נכון? 33 00:02:08,530 --> 00:02:14,362 אז בואו ננסה את זה. על ידי הזזת הסמן שלי למעלה ולמטה, אני משנה את הקו שבו הכדור שלי יזוז 34 00:02:14,362 --> 00:02:18,196 זה די מגניב, אבל אני רוצה להשתמש גם ב-mouseX 35 00:02:18,196 --> 00:02:19,863 אז איך עושים את זה? 36 00:02:19,863 --> 00:02:22,445 ובכן, למה שלא נייצר עוד כדור? 37 00:02:22,445 --> 00:02:25,945 ונגדיר שהכדור הזה יזוז בציר ההופכי - למעלה ולמטה. 38 00:02:25,945 --> 00:02:30,030 ושם פשוט ניתן למשתמש לשלוט במיקום ה-x של הכדור 39 00:02:30,030 --> 00:02:32,612 אז אנחנו בעצם עושים את ההופכי למה שעשינו עד כה 40 00:02:32,612 --> 00:02:40,637 נשתמש ב-ellipse וניתן לה את הפרמטרים mouseX, position ו-50,50 41 00:02:40,637 --> 00:02:46,906 אוקיי, תסתכלו על זה! עכשיו יש לי שני כדורים שאני שולטת בהם, שהולכים לכיוונים מנוגדים 42 00:02:46,906 --> 00:02:50,075 אבל אני עדיין לא שמחה 43 00:02:50,075 --> 00:02:53,445 אני רוצה לתת למשתמש אפילו יותר שליטה 44 00:02:53,445 --> 00:02:56,944 אני רוצה לתת למשתמש את הכוח להפעיל את הכדור השני 45 00:02:56,944 --> 00:03:01,407 ממש ליצור אותו, על ידי לחיצה עם העכבר שלו 46 00:03:01,407 --> 00:03:07,340 אז אני בעצם צריכה לדעת מתי המשתמש לוחץ על העכבר שלו 47 00:03:07,340 --> 00:03:12,945 למזלנו, בדיוק בשביל זה יש לנו משתנה בוליאני מיוחד 48 00:03:12,945 --> 00:03:19,362 הוא נקרא mouseIsPressed ואנחנו יכולים להשתמש בו בתוך הצהרת ה-if 49 00:03:19,362 --> 00:03:22,339 אז בואו נראה, זה הכדור השני שלנו 50 00:03:22,339 --> 00:03:31,945 אז אנחנו יכולים לכתוב פה שאם mouseIsPressed, ואז אנחנו נזיז את הקריאה לאליפסה לכאן. 51 00:03:31,945 --> 00:03:40,863 אז מה שזה עושה עכשיו, זה אומר לתוכנה שלנו שתצייר את האליפסה רק אם זה נכון 52 00:03:40,863 --> 00:03:46,030 ו-mouseIsPressed יהיה נכון רק אם המשתמש יילחץ על העכבר שלו 53 00:03:46,030 --> 00:03:48,195 בואו ננסה את זה 54 00:03:48,195 --> 00:03:50,338 טה דה! 55 00:03:50,338 --> 00:03:53,362 עכשיו אני יכולה לגרום לכדור להופיע מתי שאני לוחצת על העכבר 56 00:03:53,362 --> 00:03:58,407 הוא פשוט יופיע מהיקום המקביל שלו, תופיע! תופיע! תופיע! 57 00:03:58,407 --> 00:04:00,029 זה אדיר! 58 00:04:00,029 --> 00:04:04,740 הדבר המעניין לגבי המשתנה הזה mouseIsPressed 59 00:04:04,740 --> 00:04:08,805 הוא שהערך של המשתנה הוא בהתאם לפעולה של המשתמש, לא בהתאם למה שהתוכנה שלנו עושה. 60 00:04:08,805 --> 00:04:13,195 ומכיוון שהפונקציה draw רצה שוב ושוב ושוב 61 00:04:13,195 --> 00:04:16,171 הפלט של התוכנה יישתנה לאורך זמן 62 00:04:16,171 --> 00:04:18,740 והכל בעזרת קלט קטן מהמשתמש 63 00:04:18,740 --> 00:04:22,029 בשילוב עם הכוח של הצהרות if ו-mouseIsPressed 64 00:04:22,029 --> 00:04:26,241 יש לכם את כל מה שאתם צריכים בשביל ליצור דברים אדירים כמו כפתורים ותוכנות ציור. 65 00:04:26,241 --> 00:04:29,000 ווהוו!