>> [За възпроизвеждане на музика]
>> SPEAKER 1: Е, ние сме тук, последната P сет в CS50.
Поздравете себе си от като дойде досега, тъй като вашата първа здравей
светове и отпечатване пирамиди за Марио.
Ти направи един сайт миналата седмица.
И ние ще трябва да се направи още една тази седмица, този, който ви позволява да
карам из кампуса на Харвард, бране до членовете CS50 служители, както и
връщането им до тяхното жилищни сгради.
>> Сега миналата седмица работихме в PHP, една страна на сървъра език.
За тази P набор, Ние ще се въведе за JavaScript, който е
клиент език страна.
Така че нека да разгледаме някои от най- разпространение на кодове, което е условие за
ти за това P набор.
>> В папката JavaScript, там ще да бъде един куп JavaScript файлове.
Има buildings.js, който съдържа масив на сградите около Harvard
колежа, с тяхната информация и позиция.
Houses.js е масив от Харвард жилищни сгради, с техните
ширини и дължини.
Passengers.js съдържа масив на пътници -
Членовете на персонала - CS50
, че ще се върне обратно, за да техните жилищни къщи.
>> Math3D.js, че съдържа много функции, за да правите с движението.
Ако сте математически ум, След това аз приветствам ви да погледнете.
Но не е нужно да се разбере всичко там.
Shuttle.js, която се занимава с движение на совалката.
И index.html е началната страница, където всичко се случва, наистина, когато
потребител взаимодейства с обекта.
>> Service.css е CSS стил лист, които, в допълнение към Twitter
Bootstrap библиотека, контроли как index.html изглежда.
И тогава ние също имаме service.js, които съдържа обслужващи функции за
совалката.
И тук е мястото, където отиваш, за да бъде попълване на някои от към DOS.
>> Сега нека да разгледаме най-обекти и асоциативни масиви в JavaScript,
което за всички намерения и цели са взаимозаменяеми.
Ако исках да направя един обект променлива наречена пръчка, бих
го декларира.
А вътре в тези фигурни скоби бих укажете на ядрото е еднорог.
Дървесината е череша.
И дължината е 13.
>> Сега мога да получите достъп до стойности на обекти, използващи
асоциативен масив нотация.
Така пръчка ядро ​​форум, не мога да определя че равно на еднорог, или
покажат, че ако имам нужда.
Или мога да използвам оператор точка.
Wand точка дървесина се равнява на череша, и така нататък, и така нататък.
Така че виждате, че асоциативни масиви и обекти в JavaScript ще бъде
взаимозаменяеми, и воля дойде в доста по-удобен.
>> След това ние виждаме множество сгради в buildings.js.
Отново, множество обекти.
Ако исках да се направи масив от най-добрите сгради на университета Харвард, а след това
Бих го направите по следния начин.
Използването на този обект нотация, където I съхранявайте корен, име, адрес,
ширина и дължина за всяка една сграда обект.
>> Нека най-бързо се говори за променливи в JavaScript.
Подобно на PHP, JavaScript променливи са слабо или хлабаво написали.
За да се създаде локална променлива, можете префикс името на променливата с V-A-R, VaR.
>> Сега в JavaScript, функции ще ограничи обхвата на променливи.
Така че, ако имате локална променлива в рамките на функция, след други функции
Не мога да получите достъп до нея.
Но за разлика от C, вериги и условия не ограничи обхвата на променливата.
>> Така че дори и да го декларира в рамките на състояние, цялата функция ще
имат достъп до нея.
Сега без VAR, променливата ще бъде глобална.
Така че, ако просто да обяви името и присвоите стойност, а след това тази променлива
ще бъде глобална променлива в JavaScript.
>> Сега в къщи, ние имаме асоциативен масив от тип къща обекти, където
всяка къща е само на ширина и дължина.
Тогава ние имаме пътниците масив, който е масив
на тип обект пътник.
Така че всеки пътник има потребителско име, име, и една къща.
Забележете, че аз виждам от тип пътници, които наистина просто означава,
че всеки обект има една и съща двойка ключове стойност.
Така че всеки обект от тип пътник има потребителско име, име, и една къща.
>> Така че това, което ни е нужно, за да направи за множеството P?
Е, ние трябва да позволим на потребителите да избират до членовете на персонала, за да покажете всички
Членовете на персонала, които са в момента в нашия транспорт, както и да ги оставиш.
И тогава ние ще говорим и за допълнително функции, които могат да бъдат приложени за
совалката P сет.
>> Но нека да говорим за пикапа първо.
Лицата на CS50 служители са били засадени целия кампус, където всеки
Лицето се изпълнява като място марка на 3D земята, и като
маркер на карта 2D.
Така че, когато потребителят кликне върху пикапа бутон, искаме да добавим близката
пътници на совалката.
И ние също искаме да се премахне тяхното място марки от света, както и премахване на тяхната
маркер от картата, което показва, че те са в нашата совалка сега.
>> И как ще се открие, ако пътниците сте в обсега на нашата совалка?
Е, разстоянието функция -
така трансфер разстояние точка, минавайки през географската ширина и дължина, ще
изчисляване на разстоянието от ток позиция на транспорт до
отбележа, че вие ​​определяте с това дадена географска ширина и дължина.
Така че можете да използвате това, за да се изчисли разстояние от транспорт до
пътници.
>> Но как да знам къде пътниците са?
Е, това е, когато ние ще трябва да редактирате функцията попълвам.
Запълни места на всички членове на персонала и пътниците в света,
и в картата, но не съхранява тяхното местоположение.
Така че може би ще може да съхранява своята поставите марка и маркери
в някои глобалния масив.
>> Сега вече е глобален масив съхранение на информацията от страна на пътниците.
Съхранява пътници масиви всеки име на пътника и техния дом.
Така че може би можете да добавите няколко параметъра там, за да пътнически обекти.
>> За да ни помогне да се открият всички пътници в обсега на нашия транспорт, да
цикъл през всички пътници в масива пътници.
А за линия в JavaScript може да изглежда нещо като това, много подобен на
тези за линия в C. Или можем да използваме един алтернатива за контур структура.
>> За VAR аз в масив, където I все още ще бъде на индекса.
Но не е нужно да се уточни Дължината на масива точка
състояние, и аз плюс плюс.
Местоположение Всеки пътник е дадена от тяхно място марка.
>> Но марката място не е географска ширина и дължина.
Ние имаме достъп до тези параметри от получаване на геометрията, използвайки GET
геометрията на марката място.
И тогава, след като имаме геометрията, получаване или географската ширина или
дължина, като се използват тези функции.
>> Така че сега ние знаем как да се открие дали пътниците са в рамките на
Обхватът на нашата совалка.
След като имаме тези пътници, ние ще искате да добавите и всички пътници, които са
в рамките на този диапазон.
Искаме да им позволи да прескачате, и седнете на нашия транспорт, но само
ако имаме достатъчно място за тях.
>> Масивът транспорт дот места ще посочи дали седалките са празни, или
кой е на това място.
Така че, ако дадена седалка е празна, а след това това място ще бъде нула.
Така че обхождане на масива места, проверка за празни места, съхраняване
пътниците в тези места, докато не нямат никакви по-празни места.
И за съжаление, всички други пътници ще трябва да се изчака
следващия път, когато совалката се обадило.
>> След като се качи на совалката, ние ще искате за отстраняване на мястото им марка, която
е тяхна снимка в 3D свят.
Ако исках да се премахне място марка р, тогава аз ще получите всички характеристики
от моята земя, от Google Земя, и след това извадете, че специфично място
марка използвате функцията removeChild.
Тогава най-накрая, нека да премахнете маркера, иконата на картата 2D за всеки
пътнически, че ние се вдига.
За да премахнете маркер, m, тогава ще Просто изпълни m точка setMap нищожна.
Направете това за всички пътници в рамките на обхвата, и сте готови пикап.