-
במדריך האחרון שלנו, הראינו לכם כיצד אפשר להנפיש כדור שייקפוץ על הקירות בעזרת הפונקציה draw והצהרות if.
-
בואו נעבור על זה.
-
ראשית, הגדרנו כמה משתנים עבור המיקום והמהירות של הכדור.
-
לאחר מכן, בפונקצית ה-draw, שהיא פונקציה מיוחדת שנקראת שוב ושוב ושוב כשהתוכנה שלכם רצה,
-
צבענו מחדש את הרקע וציירנו אליפסה על השולחן עבודה
-
ומיקמנו את האליפסה הזו בהתבסס על המיקום של המשתנים והמהירות ואיך שהם משפיעים אחד על השני.
-
עכשיו, מבלי להשתמש בהצהרות if, הכדור שלנו פשוט ימשיך לזוז לנצח
-
או עד שנלחץ על אתחול מחדש.
-
אז הוספנו שני משפטי if כאן למטה
-
על מנת לבדוק אם הכדור שלנו קרוב לצד ימין של המסך או לצד שמאל של המסך
-
ואם כן, אנחנו נשנה את המהירות שלו בצורה חיובית או שלילית כך שהכדור בעצם ייקפוץ חזרה מהקיר.
-
אז כרגע פשוט יש לנו את הכדור הזה, שקופץ הלוך ושוב לנצח.
-
אז זה היה די מגניב, ויש עוד הרבה אנימציות מגניבות שאנחנו יכולים לעשות עם זה.
-
אבל כרגע, אני רוצה להוסיף התערבויות של המשתמש בתוכנה.
-
כרגע, התוכנה היא כמו תוכנית טלויזיה.
-
אם תתנו אותה לחבר, והחבר שלכם לא יודע לתכנת, הם לא באמת יוכלו להתערב בתוכנה.
-
כל מה שהם יוכלו לעשות זה לצפות, שזה מגניב,
-
אבל יכול להיות הרבה יותר מגניב אם הם היו יכולים לעשות משהו.
-
אז בואו ניתן למשתמש כמה דרכים לשלוט בה.
-
זוכרים שמוקדם יותר למדנו על שני משתנים גלובאלים מיוחדים בשם mouseX ו-mouseY?
-
המשתנים האלו מחזירים ערכים שאומרים לנו מה המיקום הנוכחי של העכבר של המשתמש
-
והם דרך מעולה לגרום לתוכנית שלנו להיות יותר אינטראקטיבית.
-
אז בואו נחשוב, איך נוכל להשתמש בהם?
-
ובכן, נוכל לשים אותם בתוך פונקציית ה-draw איפשהו
-
בגלל שזה החלק היחיד בתוכנה שנקרא שוב ושוב ושוב.
-
כל דבר מחוץ ל-draw נקרא רק פעם אחת, כשהתוכנה רצה בפעם הראשונה.
-
אז זה לא הגיוני להשתמש ב-mouseX וב-mouseY שם
-
כי למשתמש לא יהיה צ׳אנס להשתמש בזה
-
בתוך ה-draw, אנחנו מציירים את הגדול במרחק של 200 פיקסלים מהגבול העליון של המסך
-
מה אם נחליף את ההגדרה הזו עם mouseY?
-
מכיוון שזהו המיקום על ציר ה-y נכון?
-
ככה הוא פשוט יוסיף את מיקום ה-y בהתאם לאיפה שנקודת ה-y של המשתמש נמצאת, נכון?
-
אז בואו ננסה את זה. על ידי הזזת הסמן שלי למעלה ולמטה, אני משנה את הקו שבו הכדור שלי יזוז
-
זה די מגניב, אבל אני רוצה להשתמש גם ב-mouseX
-
אז איך עושים את זה?
-
ובכן, למה שלא נייצר עוד כדור?
-
ונגדיר שהכדור הזה יזוז בציר ההופכי - למעלה ולמטה.
-
ושם פשוט ניתן למשתמש לשלוט במיקום ה-x של הכדור
-
אז אנחנו בעצם עושים את ההופכי למה שעשינו עד כה
-
נשתמש ב-ellipse וניתן לה את הפרמטרים mouseX, position ו-50,50
-
אוקיי, תסתכלו על זה! עכשיו יש לי שני כדורים שאני שולטת בהם, שהולכים לכיוונים מנוגדים
-
אבל אני עדיין לא שמחה
-
אני רוצה לתת למשתמש אפילו יותר שליטה
-
אני רוצה לתת למשתמש את הכוח להפעיל את הכדור השני
-
ממש ליצור אותו, על ידי לחיצה עם העכבר שלו
-
אז אני בעצם צריכה לדעת מתי המשתמש לוחץ על העכבר שלו
-
למזלנו, בדיוק בשביל זה יש לנו משתנה בוליאני מיוחד
-
הוא נקרא mouseIsPressed ואנחנו יכולים להשתמש בו בתוך הצהרת ה-if
-
אז בואו נראה, זה הכדור השני שלנו
-
אז אנחנו יכולים לכתוב פה שאם mouseIsPressed, ואז אנחנו נזיז את הקריאה לאליפסה לכאן.
-
אז מה שזה עושה עכשיו, זה אומר לתוכנה שלנו שתצייר את האליפסה רק אם זה נכון
-
ו-mouseIsPressed יהיה נכון רק אם המשתמש יילחץ על העכבר שלו
-
בואו ננסה את זה
-
טה דה!
-
עכשיו אני יכולה לגרום לכדור להופיע מתי שאני לוחצת על העכבר
-
הוא פשוט יופיע מהיקום המקביל שלו, תופיע! תופיע! תופיע!
-
זה אדיר!
-
הדבר המעניין לגבי המשתנה הזה mouseIsPressed
-
הוא שהערך של המשתנה הוא בהתאם לפעולה של המשתמש, לא בהתאם למה שהתוכנה שלנו עושה.
-
ומכיוון שהפונקציה draw רצה שוב ושוב ושוב
-
הפלט של התוכנה יישתנה לאורך זמן
-
והכל בעזרת קלט קטן מהמשתמש
-
בשילוב עם הכוח של הצהרות if ו-mouseIsPressed
-
יש לכם את כל מה שאתם צריכים בשביל ליצור דברים אדירים כמו כפתורים ותוכנות ציור.
-
ווהוו!