ZAMYLA CHAN: No, tukaj smo, zadnja-p določene v CS50. Sami čestitam iz ob prišli tako daleč od svojega prvega Hello Svetove in tiskanje Up Piramide za Mario. Ste naredili spletno stran, prejšnji teden. In gremo se, da bi še enega ta teden, tisti, ki vam omogoča, da voziti okoli harvardski univerzi, nabiranje do članov osebja CS50 in jih prinaša nazaj v njihovo stanovanjske hiše. Zdaj, prejšnji teden smo delali v PHP, side jezik strežnika. Za ta p-set, se bova uvedli za JavaScript, ki je Stranka side jezik. Tako da je lahko pogled na nekatere distribucija kodo, ki je predvideno za ste za to p-set. V mapi JavaScript, da bo je kup JavaScript datotek. Tam je buildings.js, ki vsebuje Niz stavb okoli Harvardu kampus s svojimi informacijami in položaj. Houses.js je niz Harvardu stanovanjske hiše z njihovimi zemljepisne širine in dolžine. Passengers.js vsebuje niz potniki, člani osebja CS50 da boste prinaša nazaj njihove stanovanjske hiše. Math3D.js, ki vsebuje veliko funkcije, da ima opravka z gibanjem. Če ste matematično misleče, potem Pozdravljam vas, da si ogledate. Vendar vam ni treba razumeti vse, kar je tam notri. Shuttle.js, ki se ukvarja z Gibanje raketoplana je. In index.html je domača stran, kjer vse, kar se dogaja, res, kjer Uporabnik je v interakciji s pomočjo spletne strani. Service.css je CSS slogi, ki poleg Twitter Bootstrap knjižnica, nadzor index.html kako izgleda. In potem imamo tudi service.js, ki vsebuje funkcije za storitve Shuttle. In tukaj je, kam greš, da se izpolnite nekaj narediti, da-je. Zdaj pa si oglejte na objektih in asociativne nize v JavaScriptu, , ki je za vse namene, sta medsebojno zamenljiva. Če bi želel, da bi nek predmet spremenljivko imenovana palica, bi ga razglasi. In znotraj teh zavitimi oklepaji, jaz bi določite, jedro je samorog, les je češnja, in dolžina je 13. Sedaj sem lahko dostopate tudi vrednote objektov z asociativno paleto zapis. Torej palica indeks jedro, lahko nastavite , ki je enaka Samorog, ali preveri, če rabim. Ali lahko uporabite operator dot wand.wood enaka nedolžnost, in tako naprej in tako naprej. Torej vidite, da asociativne nize in predmeti v JavaScriptu se bodo zamenljivi, in volja pride v zelo priročno. Potem bomo videli niz stavb v buildings.js, spet paleto predmetov. Če bi želel, da bi paleto najboljših zgradbe na harvardski univerzi, nato I bi ga takole. Z uporabo tega objekta zapis, kjer Shranjujem root, ime, naslov, zemljepisne širine in dolžine za vsak stavbi objekt. Pojdimo hitro govoriti o spremenljivkah v JavaScript. Kot so PHP, JavaScript spremenljivke so slabo ali ohlapno vnesli. Če želite ustvariti lokalno spremenljivko, boste predpono Ime spremenljivke z V-A-R, var. Zdaj, v JavaScriptu, bodo funkcije omejiti obseg spremenljivk. Torej, če imate lokalno spremenljivko v funkcijo, potem druge funkcije ni dostopen. Toda za razliko od C, zank in pogoji ne omejiti obseg spremenljivke. Torej, tudi če ste ga razglasi notranjost bolezni, bo celotna funkcija imajo dostop do njega. Zdaj, brez var, spremenljivka bo globalno. Torej, če ste le razglasi ime in dodeli vrednost, nato pa, da spremenljivka bo globalno spremenljivko v JavaScript. Zdaj, v hišah imamo asociativno array objektov tipa gostiteljica, kjer je vsaka hiša je le širina in dolžine. Potem imamo potnike matrika, ki je matrika tipa objekta potnika. Torej vsak potnik ima uporabnik ime, ime in hišo. Opazili, da govorim o tipu Potnik, ki v resnici pomeni le da ima vsak objekt Isti ključ parov vrednosti. Torej vsak objekt tipa potnika ima uporabniško ime, ime in house. Torej, kaj moramo storiti za p-set? No, moramo omogočiti uporabnikom, da izberete do članov osebja, za prikaz vseh člani osebja, ki so trenutno v naša shuttle, in jih odložite. In potem bomo govorili tudi o dodatnih funkcije, ki se lahko izvajajo za Shuttle p-set. Toda, kaj je govoril o pickup prva. Obrazi CS50 osebje, so bile posajene povsod kampusa, kjer je vsak Obraz se izvaja kot mesto znamke na 3D Zemlji, in kot marker na 2D zemljevidu. Torej, ko uporabnik klikne Pickup gumb, želimo dodati v bližini potniki na raketoplana. In tudi mi želimo, da se odstranijo svoje mesto označi iz sveta in odstranite njihovo marker na zemljevidu, ki kaže, da oni so v naši shuttle zdaj. Torej, kako bomo odkriti, če potniki v dosegu naših shuttle? No, razdalja funkcijo, tako shuttle.distance, ki poteka v zemljepisna dolžina in širina, bo izračunal oddaljenost od trenutnega položaja za prevoz do točke, da podate z razlago zemljepisne širine in dolžine. Torej, lahko uporabite to za izračun oddaljenost od raketoplana, da potniki. Ampak kako veš, kje potniki so? No, to je, če bomo morali uredite funkcijo zapolnijo. Zapolnijo krajih po članov osebja potnike v svetu in v karti, vendar pa ne shranite svoje mesto. Torej, morda lahko shranite svoje postaviti oznake in markerji na nek globalni array. Sedaj že obstaja globalna matrika shranjevanje podatkov od potnikov. Potniki zaporedji shrani vsako Ime sovoznikov in njihova hiša. Tako da morda lahko dodate nekaj parametrov tam do osebnih predmetov. Da nam pomagajo odkriti vse potnike v razponu od naših shuttle, kaj je zanka skozi vse potniki v matriki potnikov. Za zanke v JavaScript lahko ogledate kaj takega, zelo podoben tistih zank v C. Ali lahko uporabimo alternativa za zanka, pri var i v polju, kjer sem še vedno indeks, vendar vam ni treba določite array.length stanje in i + +. Lokacija Vsak potnik je dati svoje mesto znamko. Ampak kraj znamka ni zemljepisne širine in dolžine. Moramo priti do teh parametrov, ki jih pridobivanje geometrijo, z uporabo get geometrijo na mesto znamke, nato pa ko imamo geometrijo, pridobivanje bodisi širine ali dolžine uporabo te funkcije. Torej, zdaj vemo, kako ugotoviti, ali Potniki so v Paleto naših shuttle. Ko imamo tiste potnike, se bomo želite dodati potnike, ki so na tem območju. Želimo, da se jim omogoči, da hop na in sprejeti sedež na naši shuttle, ampak le Če imamo dovolj prostora za njih. Shuttle.seats matrika bo pokazal ali sedežnem prazen, ali kdo je v tem sedežu. Torej, če je sedež prazen, potem ta sedež bo nič. Torej ponovitev čez sedežev matrike, preverjanje praznih sedežev, shranjevanje potniki v teh sedežev, dokler ne nimam več praznih sedežev. In na žalost, vsi drugi potniki bodo morali počakati Naslednjič, ko shuttle prihaja. Ko pridejo na raketoplana, bomo želeli da se odstranijo svoje mesto znamko, ki je njihova fotografija v 3D svetu. Če bi želel odstraniti kraj znamke p, potem bi dobili vse funkcije iz moje zemlje, iz Google Earth, in nato odstranite, da v določenem kraju označiti s funkcijo removeChild. Potem pa na koncu, kaj je odstraniti marker, ikona na 2D zemljevidu, za katero koli Potnik, ki smo jih pobral. Če želite odstraniti marker m, nato pa bom samo izvršitev m.setMap null. Ali to za vse potnike, ki so v dosegu, in ste končali pickup. Funkcija grafikon moral prikazati vse potnikov, ki so v vašem shuttle in prazen sedež, če je prazno. Zato grafikon Ponovil preko shuttle.seats, prikazovanje informacije o potnikih za vsak indeks, in prazen sedež, če je ta indeks null. Zdaj, če je HTML tekst Vstavim JavaScript spremenljivka, nato z uporabo document.getElementById lahko grafikon urediti notranje HTML tistih, ki so element z dodeljevanjem HTML besedilo document.getElementById notranja HTML spremenljivka. , Ko uporabnik klikne gumb odložiš v index.html, bo klic Funkcija Dropoff. In to je naša naloga, da izvajajo to. V Dropoff, bomo želeli, da odstranite vse potniki iz raketoplana le, če smo v razponu od svojega cilja, njihova stanovanjska hiša. Tako bo Dropoff morali preveriti, ali shuttle je v območju koli od hiše, in odstranite vse potrebne potniki iz raketoplana. Torej, kako preveriti, če smo v območju od koli hiš? No, še enkrat, bomo izkoristiti shuttle.distance funkcijo, ki poteka v zemljepisna širina in dolžina točke da smo preverjanje proti. Ampak kaj so te točke? No, hiše matrika, če se spomnite V houses.js, shranjuje zemljepisna širina in dolžina vsake hiše v asociativni niz, kjer je vsak Indeks je ime te hiše. Nato odstraniti potnikov - No, samo, če bomo na dosegu njihovih Hiša, ki želijo iti. Torej, še enkrat, ne pozabite, da se potniki shrani hišo, da vsak potnik želi iti. Če so v območju svojih Hiša, potem bomo odstranili, da Potnik iz shuttle.seats in niz njihov položaj v matriki na null. Zdaj pa govoriti o nekaj dodatnih funkcij da se lahko izvaja na CS50 Shuttle p-set. Tam je točkovni sistem, s katerim vi spremljate, koliko poudarja uporabnik. Za odložil potnike uspešno, lahko dobijo točke. Ampak poskuša odložiš potnike kjer ni nobene hiše v bližini, dobro, lahko dobili kaznovani za to. Torej, morda želite slediti točke v globalne spremenljivke. Lahko izvajati morda časovnik, kjer Uporabnik ima določeno količino Čas je, da pick up in drop off Določeno število potnikov. Morda celo vključitev tega s točko sistema. Ali si lahko uredite tako, da Chart potniki so razporejene po hiši. Tako da bi verjetno neke delujejo na shuttle.seats. Lahko izvajajo leteči funkcijo, kjer je, če uporabnik vnese Konami kodo, potem shuttle odlepi tleh in shuttle lahko letijo. Ampak za varno odložiš, najbolje, da se shuttle pristane svoja kolesa na zmleti prvi. Prav tako lahko izvajajo teleportacijo, kjer vam bo padec seznamu navzdol stavbe v index.html. In izberete eno od tiste, Uporabnik bo prepeljan v da je stavba na kampusu. OK, čeprav je, da potujejo skozi zidove nekaterih zgradbe na poti tja. Prav tako lahko spremenite hitrost shuttle, ki omogoča uporabniku, da se poveča ali zmanjšate hitrost. Morda želite globalno spremenljivko spremljate, koliko goriva shuttle ima, zmanjšuje je kot greste skupaj. Ko ste zadeli nič, čeprav, shuttle ne bodo mogli premikati, razen če ste dolivanje goriva, morda z uporabo gumba ali celo svoje bencinske črpalke. Ampak to zagotovo ni izčrpen seznam. Oglejte si spec za polno seznam, ali morda predlagati sami s svojim TF. Nebo je meja. To je tvoja zadnja CS50 p-set, tako da zabavajte se z njo. To je bilo CS50 Shuttle. Moram reči, to je bilo veselje za izdelavo teh z produkcijska ekipa. In upam, da ste jih uživajo, kot tudi. Moje ime je Zamyla. In to je bil CS50.