ZAMYLA CHAN: No, sme tu, posledný p-nastaviť CS50. Gratulujem sami od s tak ďaleko od svojho prvého Dobrý deň, Svety a tlač Up Pyramídy pre 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 s členmi CS50 zamestnancov a priviesť ich späť k ich obytné domy. Teraz, minulý týždeň sme pracovali v PHP, side jazyk servera. V tomto p-set, 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 ste v tomto p-set. V priečinku JavaScript, bude tam byť banda súborov JavaScript. K dispozícii je buildings.js, ktorá obsahuje rad budov po celom Harvarde Areál s ich informáciami a pozície. Houses.js je rad Harvarde bytové domy s ich zemepisnej šírky a dĺžky. Passengers.js obsahuje rad cestujúci, členovia CS50 zamestnanci ž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 Twitteri Bootstrap Knižnica, kontroly ako index.html vyzerá. A potom tu máme tiež service.js, ktoré obsahuje servisné funkcie pre Shuttle. A tu je miesto, kde budete mať vyplnenie niektorých Do to-je. 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átvoriek, by som špecifikovať, jadro je jednorožec, drevo je čerešňa, a dĺžka je 13. Teraz som 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, že keď budem potrebovať. Alebo môžem použiť operátor bodka wand.wood rovná čerešňa, 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äť, 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 premenná 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 hostiteľ 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á užívateľa meno, názov a dom. Všimnite si, že hovorím typu cestujúcich, čo v skutočnosti znamená len že každý objekt má Rovnaká dvojica kľúč hodnota. 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 p-set? 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 Shuttle p-set. 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 shuttle.distance, odovzdaním zemepisnej šírky a dĺžky, sa vypočíta vzdialenosť od aktuálnej polohy z raketoplánu do tej miery, že Zadáte sa, že vzhľadom 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 cestujúcich 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 rozsahu našej kyvadlová doprava, poďme slučka cez všetky cestujúci v poli cestujúcich. Pre slučky v JavaScripte môže vyzerať niečo také, veľmi podobné tých, pre slučky v C. Alebo môžeme použiť alternatíva pre štruktúru slučky, pre var aj v poli, kde sa bude aj naďalej index, ale nemusíte sa určiť Array.length stav a i + +. 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, ako buď šírka alebo dĺžka pomocou 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 vziať sídlo na našej raketoplánu, ale iba ak budeme mať dostatok priestoru k nim. Shuttle.seats pole bude ukazovať č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 môjho Zeme, 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 všetky cestujúcich, ktoré sme vyzdvihnúť. Ak chcete odstrániť marker m, potom budem stačí spustiť m.setMap null. Urob to pre všetkých cestujúcich v dosahu, a vy ste skončil pickup. Funkcie tabuľka by sa mala zobraziť všetky cestujúcich, ktoré sú vo vašom kyvadlová doprava, a prázdne miesto, ak je prázdna. Takže graf by mal iterácii shuttle.seats, zobrazenie Informácie o cestujúcich pre každý index, a prázdne miesto, ak je, že index je null. Teraz, keď text HTML je kladený vnútri JavaScript premenná, potom pomocou document.getElementById, graf môže upraviť vnútorné kód HTML, ktorý daný prvok priradením HTML text document.getElementById vnútorné HTML variabilný. Keď používateľ klikne na tlačidlo Drop Off v index.html, bude to volanie Funkcie dropoff. A to je našou úlohou realizovať to. Vo údajov o opustenie, budeme chcieť odstrániť akékoľvek cestujúci z raketoplánu iba vtedy, ak sme v rozsahu svojho určenia, ich obytný dom. Takže dropoff bude musieť skontrolovať, či Kyvadlová doprava je v dosahu niektorej z domy, a odstráňte potreby cestujúci z raketoplánu. Tak ako sme sa skontrolovať, či sme v rade iných domov? No, ešte raz, budeme využívať v shuttle.distance funkcie, odovzdaním zemepisnej šírky a dĺžky z bodu že sme kontrolu proti. Ale čo sú tie body? No, domy polia, ak si spomeniete v houses.js, ukladá zemepisná šírka a dĺžka každého domu asociatívne pole, kde každý Obsah je názov tohto domu. Potom odstrániť cestujúcich - dobre, len keď sme v rozsahu ich dom, ktorý chcú ísť. Takže znovu, nezabudnite, že cestujúci ukladá dom, ktorý každý cestujúci chce ísť. Ak sú v dosahu ich dom, potom budeme odstrániť, aby Cestujúci z shuttle.seats a sady ich postavenie v poli na hodnotu null. Teraz poďme hovoriť o niektorých ďalších funkciách , Ktoré môžu byť vykonávané v CS50 Shuttle p-set. Tam je bodový systém, kedy budete mať prehľad o tom, koľko body užívateľ. Pre vypadnutiu cestujúcich úspešne, môžu získať body. Ale snažia vysadiť cestujúcich tam, kde nie je žiadny dom v okolí, dobre, že môže dostať penalizáciu za to. Tak snáď chcete sledovať body v globálne premenné. Môžete implementovať snáď časovač, kde užívateľ má určité množstvo čas zdvihnúť a odísť A určitý počet cestujúcich. Možno, že dokonca integrovať tento s bodovým systémom. Alebo si môžete upraviť graf taký, že cestujúci sú radené podľa dome. Tak to by asi bolo trochu fungovať na shuttle.seats. Môžete implementovať lietanie funkciu, kde v prípade, že používateľ zadá Konami kód, potom raketoplán zdvihne pozemné a kyvadlová doprava môže lietať. Ale pre bezpečné odídu, najlepšie, aby sa Raketoplán pristane na jeho kolesá na zem ako prvý. Môžete tiež vykonať teleportáciu, kde urobíte rozbaľovací zoznam dole budovy v index.html. A výberom jednej z tých, užívateľ bude prevezený do že stavba na akademickej pôde. OK, aj keď, cestovať cez steny niektorých stavby na vašej ceste tam. Môžete tiež zmeniť rýchlosť kyvadlová doprava, čo umožňuje užívateľovi zvýšiť alebo zníženie rýchlosti. Možno budete chcieť globálne premennú sledovať, koľko paliva Kyvadlová doprava má klesajúci to, ako idete ďalej. Akonáhle dosiahnete nuly, aj keď raketoplán nebude schopný sa pohybovať, ak ste natankoval, snáď pomocou tlačidla alebo dokonca vytvoriť svoj vlastný čerpacie stanice. Ale to rozhodne nie je vyčerpávajúci zoznam. Pozrite sa na spec pre plné zoznam, alebo napríklad navrhnúť vlastný na vašej TF. Nebo je limit. Toto je vaša posledná CS50 p-set, takže baviť sa s ním. To bolo CS50 Shuttle. Musím povedať, že to bolo potešenie takže to pre vás Produkčný tím. A dúfam, že ste si ich, rovnako. Volám sa Zamyla. A to bolo CS50.