WEBVTT 00:00:01.737 --> 00:00:07.341 במדריך האחרון שלנו, הראינו לכם כיצד אפשר להנפיש כדור שייקפוץ על הקירות בעזרת הפונקציה draw והצהרות if. 00:00:07.341 --> 00:00:08.637 בואו נעבור על זה. 00:00:08.637 --> 00:00:12.407 ראשית, הגדרנו כמה משתנים עבור המיקום והמהירות של הכדור. 00:00:12.407 --> 00:00:17.240 לאחר מכן, בפונקצית ה-draw, שהיא פונקציה מיוחדת שנקראת שוב ושוב ושוב כשהתוכנה שלכם רצה, 00:00:17.240 --> 00:00:20.907 צבענו מחדש את הרקע וציירנו אליפסה על השולחן עבודה 00:00:20.907 --> 00:00:27.779 ומיקמנו את האליפסה הזו בהתבסס על המיקום של המשתנים והמהירות ואיך שהם משפיעים אחד על השני. 00:00:27.779 --> 00:00:31.195 עכשיו, מבלי להשתמש בהצהרות if, הכדור שלנו פשוט ימשיך לזוז לנצח 00:00:31.195 --> 00:00:32.862 או עד שנלחץ על אתחול מחדש. 00:00:32.862 --> 00:00:36.364 אז הוספנו שני משפטי if כאן למטה 00:00:36.441 --> 00:00:40.605 על מנת לבדוק אם הכדור שלנו קרוב לצד ימין של המסך או לצד שמאל של המסך 00:00:40.606 --> 00:00:45.309 ואם כן, אנחנו נשנה את המהירות שלו בצורה חיובית או שלילית כך שהכדור בעצם ייקפוץ חזרה מהקיר. 00:00:45.309 --> 00:00:50.071 אז כרגע פשוט יש לנו את הכדור הזה, שקופץ הלוך ושוב לנצח. 00:00:50.071 --> 00:00:53.671 אז זה היה די מגניב, ויש עוד הרבה אנימציות מגניבות שאנחנו יכולים לעשות עם זה. 00:00:53.671 --> 00:00:57.675 אבל כרגע, אני רוצה להוסיף התערבויות של המשתמש בתוכנה. 00:00:57.675 --> 00:01:00.071 כרגע, התוכנה היא כמו תוכנית טלויזיה. 00:01:00.071 --> 00:01:04.945 אם תתנו אותה לחבר, והחבר שלכם לא יודע לתכנת, הם לא באמת יוכלו להתערב בתוכנה. 00:01:04.945 --> 00:01:07.606 כל מה שהם יוכלו לעשות זה לצפות, שזה מגניב, 00:01:07.606 --> 00:01:10.340 אבל יכול להיות הרבה יותר מגניב אם הם היו יכולים לעשות משהו. 00:01:10.340 --> 00:01:13.470 אז בואו ניתן למשתמש כמה דרכים לשלוט בה. 00:01:13.470 --> 00:01:20.156 זוכרים שמוקדם יותר למדנו על שני משתנים גלובאלים מיוחדים בשם mouseX ו-mouseY? 00:01:20.156 --> 00:01:25.972 המשתנים האלו מחזירים ערכים שאומרים לנו מה המיקום הנוכחי של העכבר של המשתמש 00:01:25.972 --> 00:01:28.779 והם דרך מעולה לגרום לתוכנית שלנו להיות יותר אינטראקטיבית. 00:01:28.779 --> 00:01:31.239 אז בואו נחשוב, איך נוכל להשתמש בהם? 00:01:31.239 --> 00:01:34.029 ובכן, נוכל לשים אותם בתוך פונקציית ה-draw איפשהו 00:01:34.029 --> 00:01:39.503 בגלל שזה החלק היחיד בתוכנה שנקרא שוב ושוב ושוב. 00:01:39.503 --> 00:01:44.551 כל דבר מחוץ ל-draw נקרא רק פעם אחת, כשהתוכנה רצה בפעם הראשונה. 00:01:44.551 --> 00:01:48.136 אז זה לא הגיוני להשתמש ב-mouseX וב-mouseY שם 00:01:48.136 --> 00:01:51.243 כי למשתמש לא יהיה צ׳אנס להשתמש בזה 00:01:51.243 --> 00:01:57.280 בתוך ה-draw, אנחנו מציירים את הגדול במרחק של 200 פיקסלים מהגבול העליון של המסך 00:01:57.280 --> 00:02:01.242 מה אם נחליף את ההגדרה הזו עם mouseY? 00:02:01.242 --> 00:02:02.739 מכיוון שזהו המיקום על ציר ה-y נכון? 00:02:02.739 --> 00:02:08.530 ככה הוא פשוט יוסיף את מיקום ה-y בהתאם לאיפה שנקודת ה-y של המשתמש נמצאת, נכון? 00:02:08.530 --> 00:02:14.362 אז בואו ננסה את זה. על ידי הזזת הסמן שלי למעלה ולמטה, אני משנה את הקו שבו הכדור שלי יזוז 00:02:14.362 --> 00:02:18.196 זה די מגניב, אבל אני רוצה להשתמש גם ב-mouseX 00:02:18.196 --> 00:02:19.863 אז איך עושים את זה? 00:02:19.863 --> 00:02:22.445 ובכן, למה שלא נייצר עוד כדור? NOTE Paragraph 00:02:22.445 --> 00:02:25.945 ונגדיר שהכדור הזה יזוז בציר ההופכי - למעלה ולמטה. 00:02:25.945 --> 00:02:30.030 ושם פשוט ניתן למשתמש לשלוט במיקום ה-x של הכדור 00:02:30.030 --> 00:02:32.612 אז אנחנו בעצם עושים את ההופכי למה שעשינו עד כה 00:02:32.612 --> 00:02:40.637 נשתמש ב-ellipse וניתן לה את הפרמטרים mouseX, position ו-50,50 00:02:40.637 --> 00:02:46.906 אוקיי, תסתכלו על זה! עכשיו יש לי שני כדורים שאני שולטת בהם, שהולכים לכיוונים מנוגדים 00:02:46.906 --> 00:02:50.075 אבל אני עדיין לא שמחה 00:02:50.075 --> 00:02:53.445 אני רוצה לתת למשתמש אפילו יותר שליטה 00:02:53.445 --> 00:02:56.944 אני רוצה לתת למשתמש את הכוח להפעיל את הכדור השני 00:02:56.944 --> 00:03:01.407 ממש ליצור אותו, על ידי לחיצה עם העכבר שלו 00:03:01.407 --> 00:03:07.340 אז אני בעצם צריכה לדעת מתי המשתמש לוחץ על העכבר שלו 00:03:07.340 --> 00:03:12.945 למזלנו, בדיוק בשביל זה יש לנו משתנה בוליאני מיוחד 00:03:12.945 --> 00:03:19.362 הוא נקרא mouseIsPressed ואנחנו יכולים להשתמש בו בתוך הצהרת ה-if 00:03:19.362 --> 00:03:22.339 אז בואו נראה, זה הכדור השני שלנו 00:03:22.339 --> 00:03:31.945 אז אנחנו יכולים לכתוב פה שאם mouseIsPressed, ואז אנחנו נזיז את הקריאה לאליפסה לכאן. 00:03:31.945 --> 00:03:40.863 אז מה שזה עושה עכשיו, זה אומר לתוכנה שלנו שתצייר את האליפסה רק אם זה נכון 00:03:40.863 --> 00:03:46.030 ו-mouseIsPressed יהיה נכון רק אם המשתמש יילחץ על העכבר שלו 00:03:46.030 --> 00:03:48.195 בואו ננסה את זה 00:03:48.195 --> 00:03:50.338 טה דה! 00:03:50.338 --> 00:03:53.362 עכשיו אני יכולה לגרום לכדור להופיע מתי שאני לוחצת על העכבר 00:03:53.362 --> 00:03:58.407 הוא פשוט יופיע מהיקום המקביל שלו, תופיע! תופיע! תופיע! 00:03:58.407 --> 00:04:00.029 זה אדיר! 00:04:00.029 --> 00:04:04.740 הדבר המעניין לגבי המשתנה הזה mouseIsPressed 00:04:04.740 --> 00:04:08.805 הוא שהערך של המשתנה הוא בהתאם לפעולה של המשתמש, לא בהתאם למה שהתוכנה שלנו עושה. 00:04:08.805 --> 00:04:13.195 ומכיוון שהפונקציה draw רצה שוב ושוב ושוב 00:04:13.195 --> 00:04:16.171 הפלט של התוכנה יישתנה לאורך זמן 00:04:16.171 --> 00:04:18.740 והכל בעזרת קלט קטן מהמשתמש 00:04:18.740 --> 00:04:22.029 בשילוב עם הכוח של הצהרות if ו-mouseIsPressed 00:04:22.029 --> 00:04:26.241 יש לכם את כל מה שאתם צריכים בשביל ליצור דברים אדירים כמו כפתורים ותוכנות ציור. 00:04:26.241 --> 00:04:29.000 ווהוו!