>> 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.