[MUSIC PLAYBACK] SPEAKER 1: No, sme tu, posledný P set v CS50. Gratulujem sami od s tak ďaleko od svojej prvej ahoj svety a tlač z pyramídy Mario. Urobil si webové stránky minulý týždeň. A my bude robiť iný tento týždeň, ten, ktorý vám umožňuje jazdiť na Harvard areálu, vyberanie hore zamestnanci CS50, a priviesť ich späť k ich obytné domy. Teraz minulý týždeň sme pracovali v PHP, side jazyk servera. V tomto p Nastavte, budeme sa predstavil JavaScriptu, ktorý je na strane klienta jazyka. Takže poďme sa pozrieť na niektoré z Distribúcia kód, ktorý sa pripravili môžete pre tento P sadu. V priečinku JavaScript, bude tam byť banda súborov JavaScript. K dispozícii je buildings.js, ktorá obsahuje rad budov po celom Harvarde kampus, s ich informácií a pozície. Houses.js je rad Harvarde obytných domov, s ich zemepisnej šírky a dĺžky. Passengers.js obsahuje rad cestujúcich - so zamestnancami CS50 - že budete dobývať do ich obytné domy. Math3D.js, že obsahuje veľké množstvo Funkcie robiť s pohybom. Ak ste matematicky zmýšľajúce, potom vítam vás pozrieť. Ale nemusíte rozumieť všetko, čo tam je. Shuttle.js, ktorá sa zaoberá pohyb raketoplánu. A index.html je domovská stránka, kde všetko, čo sa deje, naozaj, kde užívateľ interakciu s webom. Service.css je CSS štýlov, , Ktoré, okrem Twitter Bootstrap knižnica, kontroly ako index.html vyzerá. A potom tu máme tiež service.js, ktoré obsahuje servisné funkcie pre kyvadlová doprava. A tu je miesto, kde budete mať vyplnenie niektorých DOS. Teraz sa poďme pozrieť na objekty a asociatívne polia v JavaScripte, ktorý pre všetky účely, sú zameniteľné. Keby som chcel, aby sa objekt premennú volal palička, by som vyhlásiť ju. A vo vnútri týchto zložených zátvorkách by som určiť jadro je jednorožec. Drevo je čerešňa. A dĺžka je 13. Teraz môžem tiež prístup k hodnotám objektov pomocou asociatívne pole notácie. Takže palička index jadro, možno nastaviť ktorá sa rovná jednorožec, alebo skontrolujte, či, keď budem potrebovať. Alebo môžem použiť operátora bodka. Wand bodka drevo rovná čerešňa, a tak ďalej, a tak ďalej. Takže vidíte, že asociatívne pole a objekty v JavaScripte sa bude zameniteľné, a bude príde celkom vhod. Potom vidíme rad domov v buildings.js. Opäť platí, že pole objektov. Ak by som chcel urobiť celý rad najlepších stavby na Harvard akademickej pôde, potom Chcel by som, aby to takto. Pomocou tohto objektu firmy, ak Aj uložiť koreňový, meno, adresa, šírky a dĺžky pre každý jeden objekt objekt. Poďme rýchlo hovoriť o premenných v JavaScriptu. Rovnako ako PHP, JavaScript premenné sú slabo alebo voľne zadali. Ak chcete vytvoriť lokálne premenné, môžete prefix názov premennej s V-A-R, var. Teraz v JavaScripte, bude funkcia obmedziť rozsah ukazovateľa. Takže ak máte lokálne premenné v rámci funkcie, potom ďalšie funkcie Nemožno pristupovať. Ale na rozdiel od C, slučky a podmienky nie obmedziť rozsah ukazovateľa. Takže aj keď sa to deklarovať vnútri stav, bude celá funkcia majú prístup k nemu. Teraz bez var, variabilný bude globálna. Takže ak ste práve deklarovať meno a priradiť hodnotu, potom táto premenná bude globálne premenné v JavaScriptu. Teraz v domoch, máme asociatívne Pole typu domu objektov, kde každý dom je len šírka a dĺžky. Potom máme cestujúci pole, čo je pole typu objektu cestujúceho. Takže každý cestujúci má meno, Názov a dom. Všimnite si, že som videl typu cestujúcich, čo v skutočnosti znamená len že každý objekt má Rovnaká hodnota dvojice kľúč. Takže každý objekt typu cestujúcich má užívateľské meno, názov a dom. Takže to, čo potrebujeme, aby urobiť pre sadu P? No, musíme umožniť používateľom vybrať hore zamestnancov, zobraziť všetky so zamestnancami, ktoré sú v súčasnej dobe naše kyvadlová doprava, a je odísť. A potom budeme tiež hovoriť o ďalšie funkcie, ktoré môžu byť realizované na P set kyvadlová doprava. Ale poďme hovoriť o vyzdvihnutie prvý. Tváre CS50 zamestnanci boli zasadil po celom areáli, kde každý tvár je implementovaný ako miesto značka na 3D zemi, a ako značka na 2D mape. Takže, keď používateľ klikne na pickup tlačidlo, chceme pridať blízkosti cestujúci do raketoplánu. A tiež chceme odstrániť svoje miesto označiť zo sveta, a odstrániť ich značka z mapy, čo naznačuje, že sú v našom raketoplánu teraz. Tak ako sme sa zistiť, či cestujúci sú v dosahu nášho raketoplánu? No, vzdialenostné funkcie - takže raketoplán bodka vzdialenosť, odovzdaním zemepisnej šírky a dĺžky, bude vypočítať vzdialenosť od prúdu poloha dopravu do bodu, ktorý určíte, že sa vzhľadom k zemepisnej šírky a dĺžky. Takže môžete použiť na výpočet vzdialenosť od raketoplánu, aby cestujúci. Ale ako viete, kde cestujúci sú? No, to je miesto, kde budeme musieť upraviť funkciu naplniť. Naplniť umiestni všetkých zamestnancov a cestujúci do sveta, a do mapy, ale nie je uložiť ich umiestnenie. Takže možno si môžete uložiť svoje miesto známky a značky v niektorých globálnom poli. Teraz už existuje globálne polia ukladanie informácií od cestujúcich. Obchody Cestujúci pole každý Meno cestujúceho a ich dom. Takže možno, môžete pridať pár parametrov tam objekty pre cestujúcich. Ak nám chcete pomôcť odhaliť všetkých cestujúcich v dosahu nášho raketoplánu, poďme slučka cez všetkých cestujúcich v poli cestujúci. Pre slučky v JavaScripte môže vyzerať niečo také, veľmi podobné tých, pre slučku v C. Alebo môžeme použiť alternatívou pre konštrukciu slučky. Pre var aj v poli, kde som bude stále index. Ale nemusíte špecifikovať dĺžka poľa bodka stav, a ja plus plus. Umiestnenie Každý cestujúci je vzhľadom na ich miesto značkou. Ale miesto známka nie je zemepisnej šírky a dĺžky. Máme prístup k týmto parametre získanie geometria, pomocou get geometrie na mieste značku. A potom, akonáhle budeme mať geometriu, dostať buď zemepisnej šírky alebo dĺžky, s použitím týchto funkcií. Takže teraz vieme, ako zistiť, či cestujúci sú v rámci Rozsah nášho raketoplánu. Akonáhle budeme mať tých cestujúcich, budeme Chcete pridať nejaké cestujúcich, ktoré sú v tomto rozsahu. Chceme, aby mohli naskočiť, a Posaďte sa na našej raketoplánu, ale iba ak budeme mať dostatok priestoru pre nich. Kyvadlová doprava dot sedadlá pole bude uveďte, či sedadlá sú prázdne, alebo ktorý je v tomto sedadle. Takže, ak je sedadlo prázdne, potom že sídlo bude mať hodnotu null. Takže iterácii cez pole sedadlá, kontrola prázdnych miest, skladovanie cestujúci do týchto miest, kým sa nemajú žiadne ďalšie prázdne miesta. A bohužiaľ, všetky ostatné cestujúci bude musieť počkať nabudúce raketoplán príde. Akonáhle sa dostanete na raketopláne, budeme chcieť odstrániť ich značku miesta, ktoré je ich fotografie v 3D svete. Ak by som chcel odstrániť miesto známky p, potom by som dostať všetky funkcie z mojej krajiny, z Google Earth, a potom odstrániť, že konkrétne miesto označiť pomocou funkcie removeChild. Potom konečne, poďme odstrániť značku, ikona na 2D mape pre akýkoľvek cestujúcich, ktoré sme vyzdvihnúť. Ak chcete odstrániť marker, m, potom budem stačí spustiť m dot setMap null. Urob to pre všetkých cestujúcich v dosahu, a vy ste skončil pickup.