>> ZAMYLA צ'אן: ובכן, הנה אנחנו, בCS50 להגדיר p-האחרון.
לברך את עצמכם מהצורך הגיע כל כך רחוק מאז שלום הראשון שלך
עולמות והדפסה עד פירמידות למריו.
אתה עשית באתר בשבוע שעבר.
ואנחנו הולכים להיות ביצוע עוד אחד השבוע, אחד המאפשר לך
נוסע ברחבי קמפוס אוניברסיטת הרווארד, קטיף עד CS50 חברים ואנשי צוות
מביא אותם אליהם בתי מגורים.
>> עכשיו, בשבוע שעבר עבדנו ב-PHP, שפת צד שרת.
עבור p-קבוצה זו, אנחנו מקבלים הצגנו לJavaScript, שהוא
שפת צד לקוח.
אז בואו נסתכל על כמה מן קוד הפצה שספק ל
לך על p-קבוצה זו.
בתיקיית JavaScript, יהיו להיות חבורה של קבצים ב-JavaScript.
>> יש buildings.js, המכיל מערך של מבנים סביב הרווארד
קמפוס עם המידע שלהם ועמדה.
Houses.js הוא מערך של הרווארד בתי מגורים עימם
קווי רוחב וקווי אורך.
Passengers.js מכיל מערך של נוסעים, אנשי צוות CS50
כי אתה תהיה להחזיר ל בתי המגורים שלהם.
>> Math3D.js, שמכיל הרבה פונקציות לעשות עם התנועה.
אם אתה באופן מתמטי אופקים, אז אני מזמין אתכם להעיף מבט.
אבל אתה לא צריך להבין כל מה שביש.
Shuttle.js, העוסק ב התנועה של הסעות.
וindex.html הוא דף הבית שבו כל מה שקורה, באמת, שבו
משתמש אינטראקציה עם האתר.
>> Service.css הוא גיליון סגנונות CSS, אשר בנוסף לטוויטר
ספריית bootstrap, פקדים איך נראה index.html.
ולאחר מכן יש לנו גם service.js, אשר מכיל פונקציות שירות עבור
הסעות.
והנה שבו אתה הולך להיות מילוי בחלק מהמטלות לשל.
>> עכשיו בואו נסתכל על עצמים ו מערכים אסוציאטיביים ב-JavaScript,
אשר, לכל דבר ועניין, ניתנים להחלפה.
אם אני רוצה לעשות אובייקט משתנה בשם שרביט, הייתי
להצהיר על זה.
ובתוך הסוגריים מסולסלים האלה, הייתי תציין, הליבה היא חד קרן, העץ
הוא דובדבן, והאורך הוא 13.
>> עכשיו, אני יכול גם לגשת לערכים של אובייקטים באמצעות
סימון מערך אסוציאטיבי.
ליבת מדד אז שרביט, אני יכול להגדיר כי שווה לקרן, או
לבדוק שאם אני צריך.
או שאני יכול להשתמש באופרטור הנקודה wand.wood שווה דובדבן, ו
כן הלאה וכן הלאה.
אז אתה רואה שמערכים ואסוציאטיביים אובייקטים ב-JavaScript הולכים להיות
להחלפה, ורצון להיות שימושי למדי.
>> ואז אנחנו רואים מערך של מבנים בbuildings.js,
שוב, מערך של אובייקטים.
אם אני רוצה ליצור מערך של המיטב בניינים בקמפוס אוניברסיטת הרווארד, ולאחר מכן
אני אעשה את זה באופן הבא.
באמצעות סימון האובייקט הזה, שבו אני מאחסן את השורש, שם, הכתובת,
קו רוחב, אורך ורוחב לכל אובייקט בניין אחד.
>> בואו נדבר במהירות על משתנים ב-JavaScript.
כמו PHP, משתני JavaScript הם בחולשה או רפיון שהוקלד.
כדי ליצור משתנים מקומי, אתה קידומת השם המשתנה עם V--R, var.
עכשיו, ב-JavaScript, פונקציות תהיה לצמצם את ההיקף של משתנים.
אז אם יש לך משתנה מקומי בתוך פונקציה, ואז פונקציות אחרות
לא יכול לגשת אליו.
>> אבל שלא כמו C, לולאות ותנאים לא לצמצם את היקף משתנה.
אז גם אם אתה מצהיר את זה בפנים של מצב, תהיה כולו הפונקציה
יש להם גישה אליו.
עכשיו, בלי var, משתנה יהיה גלובלי.
אז אם אתה רק מכריז את השם ו להקצות ערך, אז זה משתנה
יהיה משתנה גלובלי ב-JavaScript.
>> עכשיו, בבתים, יש לנו אסוציאטיבי מערך של אובייקטים מסוג המארח, שבו
כל בית הוא רק קו רוחב וקו אורך.
אז יש לנו את הנוסעים מערך, שהוא מערך
נוסע סוג האובייקט.
אז כל נוסע יש משתמשים שם, שם, ובית.
>> שים לב שאני אומר מסוג נוסע, שבאמת רק אומר
כי לכל אובייקט אותה זוגות ערך מפתח.
אז כל אובייקט של נוסעים סוג יש שם משתמש, שם, ובית.
אז מה אנחנו צריכים לעשות כדי לעשות עבור p-הסט?
ובכן, אנחנו צריכים לאפשר למשתמשים לבחור עד חברי צוות, כדי להציג את כל
אנשי צוות שנמצאים כרגע ב המעבורת שלנו, וכדי להוריד אותם.
ואז גם לדבר על תוספת תכונות שניתן ליישם עבור
p-סט הסעות.
>> אבל בואו נדבר על הטנדר ראשון.
פניהם של צוות CS50 היו ניטע בכל רחבי קמפוס, בו כל
פנים מיושמים כסימן מקום על פני כדור הארץ 3D, וכמו
סמן על מפת 2D.
לכן, כאשר המשתמש לוחץ על איסוף כפתור, אנחנו רוצים להוסיף סמוך
נוסעי המעבורת.
ואנחנו גם רוצים להסיר את מקומם לסמן מהעולם ולהסירם
סמן מן המפה, המצביע על כך הם בהסעות שלנו עכשיו.
>> אז איך לזהות אם נוסעים נמצא בטווח של המעבורת שלנו?
ובכן, מרחק הפונקציה, ולכן shuttle.distance, עובר ב
קווי אורך ורוחב, יחשב המרחק מהמיקום הנוכחי
של המעבורת עד לנקודה ש אתה מציין שבניתנת
קווי אורך ורוחב.
כך שאתה יכול להשתמש בזה כדי לחשב את מרחק מהמעבורת ל
נוסעים.
>> אבל איך אתה יודע איפה הנוסעים?
ובכן, זה המקום שבי נצטרך לערוך את הפונקציה לאכלס.
לאכלס מקומות כל חברי צוות בנוסעים לעולם
ולמפה, אבל לא תאחסן את המיקום שלהם.
אז אולי אתה יכול לאחסן אותם למקם את הסימנים וסמנים
בחלק המערך הגלובלי.
>> עכשיו, יש כבר מערך גלובלי אחסון מידע מנוסעים.
חנויות המערך נוסע כל אחד שמו של נוסע ואת הבית שלהם.
אז אולי אתה יכול להוסיף כמה פרמטרים יש לחפצי נוסעים.
>> כדי לעזור לנו לזהות את כל הנוסעים בטווח שלנו
מעבורת, לולאה של בואו דרך כל נוסע במערך הנוסעים.
לולאה בJavaScript עשויה להיראות משהו כזה, דומה מאוד ל
אלה ללולאות בג או שאנחנו יכולים להשתמש חלופי למבנה לולאה, עבור
אני var במערך, שבו אני עדיין יהיה המדד, אבל אתה לא צריך
לציין את array.length מצב ואני + +.
>> מיקומו של כל נוסע הוא ניתנו על ידי סימן המקום שלהם.
אבל סימן המקום אינו קו רוחב והאורך.
אנחנו צריכים לגשת לפרמטרים אלו על ידי מקבל את הגיאומטריה, באמצעות גט
גיאומטריה על סימן המקום, ולאחר מכן ברגע שיש לנו את הגיאומטריה, מקבל
או קו הרוחב או האורך שימוש בפונקציות הללו.
>> אז עכשיו אנחנו יודעים איך לזהות אם נוסעים נמצאים בתוך
מגוון רחב של ההסעות שלנו.
ברגע שיש לנו הנוסעים האלה, אנחנו רוצה להוסיף כל נוסעים, כי הם
בטווח זה.
אנחנו רוצים לאפשר להם לקפוץ על ולקחת מושב במעבורת שלנו, אבל רק
אם יש לנו מספיק מקום עבורם.
>> Shuttle.seats המערך יציין אם מושבים ריקים, או
שהוא במושב זה.
אז אם מקום מושבו הוא ריק, ואז המושב שיהיה ריק.
אז לחזר על מערך המושבים, בדיקה למושבים ריקים, אחסון
נוסע למושבים האלה עד שאתה אין לי שום מושבים ריקים יותר.
ולמרבה הצער, כל נוסעים אחרים יצטרך לחכות ל
בפעם הבאה שהמעבורת מגיעה למטה.
>> ברגע שהם מקבלים על המעבורת, אנחנו רוצים כדי להסיר את חותם המקום שלהם, שבו
היא התמונה שלהם בעולם 3D.
אם אני רוצה להסיר עמ 'סימן מקום, אז הייתי מקבל את כל התכונות
מכדור הארץ שלי, מ- Google Earth, ולאחר מכן להסיר את אותו מקום ספציפי
לסמן באמצעות פונקצית removeChild.
ואז לבסוף, בואו להסיר את הסמן, הסמל על מפת 2D, לכל
נוסעים שאנחנו מרימים.
>> כדי להסיר מ 'סמן, אז אני רק בביצוע null m.setMap.
האם זה עבור כל נוסעים בטווח, ושתסיים את טנדר.
פונקצית התרשים צריכה להציג את כל מהנוסעים שנמצאים בך
מעבורת, ומושב ריק אם ריק.
אז תרשים צריך לחזר על shuttle.seats, בו מוצגות
מידע לנוסע עבור כל מדד, ומושב ריק אם המדד שהוא ריק.
>> עכשיו, אם טקסט HTML הוא לשים בתוך JavaScript משתנה, ולאחר מכן באמצעות
document.getElementById, פחית תרשים לערוך את ה-HTML הפנימי של שניתנה
אלמנט ידי הקצאה טקסט HTML כדי
document.getElementById משתנה HTML פנימי.
כאשר המשתמשים לוחץ על כפתור הגלילה כבוי בindex.html, הוא יתקשר
פונקצית נפילה ענקית.
וזה התפקיד שלנו ליישם את זה.
>> בנפילה ענקית, אנחנו רוצים להסיר כל נוסע מהמעבורת רק אם
אנחנו בטווח של היעד שלהם, בית המגורים שלהם.
אז נפילה ענקית תצטרך לבדוק אם ההסעות היא בטווח של כל אחד
בתים, ולהסיר כל צורך נוסע מהמעבורת.
אז איך אנחנו בודקים אם אנחנו בטווח של כל בתים?
ובכן, שוב, אנחנו נעשה שימוש shuttle.distance פונקציה, עובר ב
קווי אורך והרוחב של הנקודה שאנחנו בודקים נגד.
>> אבל מה הן הנקודות האלה?
ובכן, את מערך הבתים, אם אתה זוכר בhouses.js, מאחסן
קווי אורך ורוחב של כל בית ב מערך אסוציאטיבי, שבו כל
מדד הוא שמו של הבית הזה.
ואז להסיר את הנוסעים -
כן, רק אם אנחנו בטווח שלהם בית שהם רוצים ללכת אליו.
אז שוב, זכור כי נוסעים מאחסן את הבית שכל נוסעים
רוצה ללכת.
אם הם נמצאים בטווח קליטה שלהם בית, אז אנחנו נסיר כי
נוסע מshuttle.seats וסט את עמדתם במערך לריק.
>> עכשיו בואו נדבר על כמה תכונות נוספות כי יכול להיות מיושם ב
p-סט הסעות CS50.
יש שיטה ניקוד לפיה לך לעקוב אחר כמה
מצביע למשתמש.
שלהוריד את נוסעים בהצלחה, הם יכולים לקבל נקודות.
אבל על מנת לנסות להוריד את הנוסעים שאין בו כל בית בקרבת מקום,
כן, הם יכולים לקבל נענש על כך.
אז אולי אתה רוצה לעקוב אחר הנקודות במשתנה גלובלית.
>> אתה יכול ליישם אולי טיימר, שבו למשתמש יש כמות מסוימת של
זמן כדי להרים ולהשיל מספר מסוים של נוסעים.
אולי אפילו לשלב את זה עם השיטה הניקוד.
או שאתה יכול לערוך תרשים כזה נוסעים מסודרים על ידי בית.
אז זה כנראה יהיה סוג לתפקד לshuttle.seats.
>> אתה יכול ליישם את תכונה מעופפת, שבו אם משתמש תשומות Konami
קוד, ולאחר מכן המעבורת ממריאה קרקע והמעבורת יכולים לעוף.
אבל לירידה בטוחה מ, הטוב ביותר לעשות להנחית את מעבורת הגלגלים שלה על
הקרקע ראשונה.
גם אתה יכול ליישם טלפורטציה, שבו אתה עושה את הרשימה נפתחת של
בניינים בindex.html.
ובחירה באחד מאלה, משתמש יועבר ל
בניין שעל קמפוס.
בסדר, אם כי, לנסוע דרך הקירות של כמה
בניינים בדרך לשם.
>> גם אתה יכול לשנות את המהירות של מעבורת, המאפשר למשתמש להגדיל
או להקטין את המהירות.
אולי אתה רוצה משתנה גלובלי ל לעקוב אחר כמה דלק
יש הסעות, הפחתה זה כמו שאתה הולך יחד.
ברגע שאתה מכה אפס, אם כי, ההסעות לא תוכל לעבור, אלא אם כן יש לך
לתדלק, אולי באמצעות כפתור, או אפילו להפוך את תחנת הדלק משלך.
>> אבל זה בהחלט לא רשימה ממצה.
בדוק את המפרט למלא רשימה, או אולי להציע
משלך כדי TF שלך.
השמיים הוא הגבול.
זה p-סט CS50 האחרון שלך, כל כך כיף עם זה.
זה היה CS50 הסעות.
>> אני חייב לומר, זה היה תענוג מה שהופך את אלה עבורך עם
צוות הפקה.
ואני מקווה שיש לך ליהנות מהם, גם כן.
השם שלי הוא Zamyla.
וזה היה CS50.