במדריך האחרון שלנו, הראינו לכם כיצד אפשר להנפיש כדור שייקפוץ על הקירות בעזרת הפונקציה 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
יש לכם את כל מה שאתם צריכים בשביל ליצור דברים אדירים כמו כפתורים ותוכנות ציור.
ווהוו!