ZAMYLA CHAN: Е, ние сме тук, последната стр. зададена в CS50. Поздравете себе си от като дойде досега, тъй като първата си Hello Worlds и печат Up Pyramids за Марио. Ти направи един сайт миналата седмица. И ние ще трябва да се направи още една тази седмица, този, който ви позволява да карам из кампуса на Харвард, бране до членовете и персоналът CS50 връщането им до тяхното жилищни сгради. Сега, миналата седмица работихме в PHP, една страна на сървъра език. За тази р-комплект, Ние ще се въведе за JavaScript, който е клиент език страна. Така че нека да разгледаме някои от най- разпространение на кодове, което е условие за ти за това р-сет. В папката JavaScript, там ще да бъде един куп JavaScript файлове. Има buildings.js, който съдържа масив на сградите около Harvard кампус с тяхната информация и позиция. Houses.js е масив от Харвард жилищни сгради с тяхната ширини и дължини. Passengers.js съдържа множество пътници, членовете на персонала CS50 , че ще се върне обратно, за да техните жилищни къщи. Math3D.js, че съдържа много функции, за да правите с движението. Ако сте математически ум, след това Приветствам ви да погледнете. Но не е нужно да се разбере всичко там. Shuttle.js, която се занимава с движение на совалката. И index.html е началната страница, където всичко се случва, наистина, когато потребител взаимодейства с обекта. Service.css е CSS стил лист, които в допълнение към Twitter Bootstrap Library, контроли как index.html изглежда. И тогава ние също имаме service.js, които съдържа обслужващи функции за совалката. И тук е мястото, където отиваш, за да бъде попълване на някои от най-направя, за да те години. Сега нека да разгледаме най-обекти и асоциативни масиви в JavaScript, който, за всички намерения и цели, са взаимозаменяеми. Ако исках да направя един обект променлива наречена пръчка, бих го декларира. А вътре в тези фигурни скоби, бих уточни, сърцевината е от еднорог, дървото е череша, и е с дължина 13. Сега, не мога да получите достъп до стойности на обекти, използващи асоциативен масив нотация. Така пръчка ядро ​​форум, не мога да определя че равно на еднорог, или провери, че ако имам нужда. Или мога да използвам оператора дот wand.wood равнява на череша, и така нататък и така нататък. Така че виждате, че асоциативни масиви и обекти в JavaScript ще бъде взаимозаменяеми, и воля дойде в доста по-удобен. След това ние виждаме множество сгради в buildings.js, отново, масив от обекти. Ако исках да се направи масив от най-добрите сгради на университета Харвард, а след това Бих го направите по следния начин. Използването на този обект нотация, където I съхранявайте корен, име, адрес, ширина и дължина за всяка една сграда обект. Нека най-бързо се говори за променливи в JavaScript. Подобно на PHP, JavaScript променливи са слабо или хлабаво написали. За да се създаде локална променлива, можете префикс името на променливата с V-A-R, VAR. Сега, в JavaScript, функции ще ограничи обхвата на променливи. Така че, ако имате локална променлива в рамките на функция, след други функции Не мога да получите достъп до нея. Но за разлика от C, вериги и условия не ограничи обхвата на променливата. Така че дори и да го декларира в рамките на състояние, цялата функция ще имат достъп до нея. Сега, без VAR, променливата ще бъде глобална. Така че, ако просто да обяви името и присвоите стойност, а след това тази променлива ще бъде глобална променлива в JavaScript. Сега, в къщи, ние имаме асоциативен масив от тип домакин обекти, където всяка къща е само на ширина и дължина. Тогава ние имаме пътниците масив, който е масив на тип обект пътник. Така че всеки пътник има потребителска име, име, и една къща. Забележете, че казвам на тип пътници, които наистина просто означава, че всеки обект има същите двойки ключови стойности. Така че всеки обект от тип пътник има потребителско име, име, и една къща. Така че това, което ни е нужно, за да направи за р-я сет? Е, ние трябва да позволим на потребителите да избират до членовете на персонала, за да покажете всички Членовете на персонала, които са в момента в нашия транспорт, както и да ги оставиш. И тогава ние ще говорим и за допълнително функции, които могат да бъдат приложени за на Shuttle р-сет. Но нека да говорим за пикапа първо. Лицата на CS50 служители са били засадени целия кампус, където всеки Лицето се изпълнява като място марка на 3D Земята, и като маркер на карта 2D. Така че, когато потребителят кликне върху Пикап бутон, искаме да добавим близката пътници на совалката. И ние също искаме да се премахне тяхното място марки от света и се премахне тяхното маркер от картата, което показва, че те са в нашата совалка сега. И как ще се открие, ако пътниците сте в обсега на нашата совалка? Е, разстоянието функция, така че shuttle.distance, преминават при географска ширина и дължина, ще изчисли разстоянието от текущата позиция на совалката до точката, че вие определяте с дадената географска ширина и дължина. Така че можете да използвате това, за да се изчисли разстояние от транспорт до пътници. Но как да знам къде пътниците са? Е, това е, когато ние ще трябва да редактирате функцията попълвам. Запълни места на всички членове на персонала в пътниците в света и в картата, но не съхранява тяхното местоположение. Така че може би ще може да съхранява своята поставите марка и маркери в някои глобалния масив. Сега, вече е глобален масив съхранение на информацията от страна на пътниците. Съхранява пътници масиви всеки име на пътника и техния дом. Така че може би можете да добавите няколко параметъра там, за да пътнически обекти. За да ни помогнете да открие всички от пътниците в обсега на нашето транспорт, линия Нека през всички пътниците в масива пътници. А за линия в JavaScript може да изглежда нещо като това, много подобен на тези за линии в C. Или можем да използваме един алтернатива за линия структура, за VAR аз в масив, където аз все още ще бъде на индекса, но не е нужно да се уточни array.length състояние и аз + +. Местоположение Всеки пътник е дадена от тяхно място марка. Но марката място не е географска ширина и дължина. Ние имаме достъп до тези параметри от получаване на геометрията, използвайки GET геометрията на марката място, а след това веднъж имаме геометрията, получаване или географската ширина или дължина използването на тези функции. Така че сега ние знаем как да се открие дали пътниците са в рамките на Обхватът на нашата совалка. След като имаме тези пътници, ние ще искате да добавите и всички пътници, които са в рамките на този диапазон. Искаме да им позволи да прескачате и да вземат само на място в нашия транспорт, но ако имаме достатъчно място за тях. Масивът shuttle.seats ще покаже дали седалките са празни, или кой е на това място. Така че, ако дадена седалка е празна, а след това това място ще бъде нула. Така че обхождане на масива места, проверка за празни места, съхраняване пътниците в тези места, докато не нямат никакви по-празни места. И за съжаление, всички други пътници ще трябва да се изчака следващия път, когато совалката се свежда. След като се качи на совалката, ние ще искате за отстраняване на мястото им марка, която е тяхна снимка в 3D свят. Ако исках да се премахне място марка р, тогава аз ще получите всички характеристики от моя Earth, от Google Земя, и след това извадете, че специфично място марка използвате функцията removeChild. Тогава най-накрая, нека да премахнете маркера, иконата на 2D картата, за всеки пътнически, че ние се вдига. За да премахнете маркер m, а след това аз ще Просто изпълни m.setMap нищожна. Направете това за всички пътници в рамките на обхвата, и сте готови пикап. Функцията диаграма трябва да покажете всички от пътниците, които са в транспорт, както и празно място, ако празен. Така диаграма трябва обхождане shuttle.seats, изписващ за информиране на пътниците за всеки отделен индекс, и празно място, ако този показател е нула. Сега, ако HTML текст се поставя вътре в JavaScript променлива, след това с помощта document.getElementById, диаграма консерва редактирате вътрешната HTML на дадената елемент чрез възлагане на HTML текст към document.getElementById вътрешната HTML променлива. Когато потребителите кликнат върху бутона Drop Off в index.html, тя ще се обадя на на връщане функция. И това е наша работа да го привеждат в изпълнение. В на връщане, ще искаме да се отстранят всички пътниците от совалката, само ако ние сме в обхвата на тяхното предназначение, жилищния си къща. Така че на връщане ще трябва да се провери дали совалката е в обхвата на някоя от къщи, и се отстранят всички необходими пътниците от совалката. Е, как да проверим дали сме в обхвата на всички къщи? Е, все пак, ще се възползват от shuttle.distance функция, която минава през географската ширина и дължина на точката че ние сме проверка срещу. Но какви са тези точки? Е, масива къщи, ако си спомняте в houses.js, съхранява географска ширина и дължина на всяка къща в асоциативен масив, където всеки индекс е името на тази къща. След това да се премахне пътници - добре, само ако сме в обхвата на тяхната къща, която те искат да отидете. Така че отново, не забравяйте, че пътниците съхранява в къщата, че всеки пътник иска да отиде. Ако те са в обсега на тяхната къща, а след това ние ще премахнем че пътник от shuttle.seats и набор тяхната позиция в масива на нула. Сега нека да поговорим за някои допълнителни функции че може да се прилага в на CS50 Shuttle р-сет. Има една точкова система, при която да следите колко изтъква потребител има. За отпадане на пътници успешно, те могат да получат точки. Но се опитвам да свалям пътници където няма никаква къща наблизо, добре, те могат да се наказват за това. Така че може би искате да следите точките в глобална променлива. Вие може да реализира може би таймер, където потребителят има определено количество на време, за да се вдигне и да оставиш на определен брой пътници. Може би дори се интегрират с точковата система. Или можете да редактирате таблицата, така че пътници са подредени по къща. Така че най-вероятно ще бъде един вид функционира до shuttle.seats. Можете да приложат летящ функция, където ако потребителят въвежда на Konami код, а след това на совалката издига край земята и на совалката може да лети. Но за безопасно свалям, най-добре да се направи совалката разтовари своя колелата на земята първа. Можете също така да приложат телепортация, , където можете да направите падащ списък на сгради в index.html. И избор на един от тези, на потребител ще бъдат транспортирани до тази сграда на територията на колежа. Добре, все пак, да пътуват през стените на някои сгради по пътя си там. Можете също да промените скоростта на транспорт, което позволява на потребителя да увеличи или намаляване на скоростта. Може би искате глобална променлива да Следете колко гориво транспорт има, като намалява то като отидеш заедно. След като удари нула, все пак, на совалката не ще бъде в състояние да се движи освен ако не сте презарежда, може би с помощта на бутон, или дори и да направи своя собствена бензиностанция. Но това със сигурност не е изчерпателен списък. Проверете спецификациите за пълния списък, или може би да предложи собствения си към TF. Небето е границата. Това е последният ти CS50 р-комплект, така че да се забавляват с него. Това беше CS50 Shuttle. Трябва да кажа, че беше удоволствие вземане на тези за вас с производство екип. И аз се надявам, че сте ги ползват, както добре. Моето име е Zamyla. И това беше CS50.