>> ZAMYLA Chan: Noh, siin me oleme, viimase p-seatud CS50.
End õnnitleda omamast jõudnud nii kaugele, sest oma esimese Tere
Worlds ja trükkimine Up Püramiidid Mario.
Sa tegid veebilehel eelmisel nädalal.
Ja me teeme veel ühe Sel nädalal, üks, mis võimaldab teil
sõita ringi Harvard campus, korjamine üles CS50 töötajad ja
viies need tagasi oma elumajad.
>> Nüüd, viimasel nädalal me töötanud PHP, serveripoolne keel.
Selle p-set, me lähme sisse JavaScript, mis
kliendi poolel keeles.
Võtame pilk mõned jaotus kood, mis on sätestatud, et
teid selle p-set.
In JavaScript kausta, siis hunnik JavaScript failid.
>> Seal buildings.js, mis sisaldab array hoonete ümber Harvard
campus oma andmed ja positsioon.
Houses.js on massiivi Harvard elumajad koos oma
pikkus-ja laiuskraadid.
Passengers.js sisaldab massiivi reisijad, CS50 töötajad
et sul tuleb tuua tagasi nende elumajad.
>> Math3D.js, mis sisaldab palju funktsioonid pistmist liikumine.
Kui oled matemaatiliselt mõtlemisega, siis Mul on hea meel, et te võtate pilk.
Aga sa ei pea aru kõik on seal.
Shuttle.js, mis tegeleb Shuttle liikumisele.
Ja index.html on kodulehekülg, kus kõik juhtub, tegelikult, kui
kasutaja suheldes kohas.
>> Service.css on CSS stiili lehed, mis lisaks Twitter
Bootstrap raamatukogu kontroll kuidas index.html välimus.
Ja siis on meil ka service.js, mis sisaldab teenustegevusega
Shuttle.
Ja siin on koht, kus sa lähed, et olla täites mõned ülesanded on.
>> Nüüd võtame pilk objektid ja assotsiatiivne massiivid JavaScript,
mis, kõik kavatsused ja eesmärkidel, on omavahel vahetatavad.
Kui ma tahtsin teha objekti muutuja nimetatakse võlukepp, ma
kuulutada.
Ja sees need lokkis traksid, oleksin täpsustada, tuum on ükssarvik, puit
on kirss ja pikkus on 13.
>> Nüüd saab kasutada ka väärtused objekte kasutades
assotsiatiivne massiiv märke.
Nii võlukepp index tuum, ma ei saa määrata mis võrdub ükssarvik või
kontrollige, et kui mul on vaja.
Või saan kasutada dot operaator wand.wood võrdub kirsi-ja
nii edasi ja nii edasi.
Nii et näete, et assotsiatiivne massiivid ja objektid JavaScript ei kavatse olla
vahetatavad, ja tulevad üsna mugav.
>> Siis näeme hulgaliselt hooneid aastal buildings.js,
jälle hulga esemeid.
Kui ma tahtsin teha massiivi parim hoonete Harvard loengusse, siis
Ma teeks järgmine.
Selle objekti märke, kus Ma hoida root, nime, aadressi,
laius-ja pikkuskraad iga ühe hoone objekti.
>> Lähme kiiresti rääkida muutujad JavaScript.
Nagu PHP, JavaScript muutujad on nõrgalt või nõrgalt tipitud.
Luua kohaliku muutuja, siis eesliide muutuja nime V-A-R, var.
Nüüd, JavaScript, funktsioonid piirata ulatust muutujad.
Nii et kui teil on kohalik muutuja funktsioon, siis muud funktsioonid
ei saa seda kasutada.
>> Kuid erinevalt C, silmad ja tingimused ei piirata ulatust muutuja.
Nii et isegi kui sa kuulutada sees tingimus, kogu funktsioon ei toimi
on juurdepääs sellele.
Nüüd, ilma var muutuja on ülemaailmne.
Nii et kui sa lihtsalt tunnistada nimi ja omistada väärtus, siis see muutuja
on globaalne muutuja JavaScript.
>> Nüüd, maja, meil on assotsiatiivne massiivi host tüüpi objekte, kus
iga maja on lihtsalt laiuskraad ja pikkuskraad.
Siis on meil reisijaid massiiv, mis on massiiv
Objekti tüüp reisija.
Nii et iga reisija kasutaja Nimi, nimi ja maja.
>> Pange tähele, et ma räägin tüüpi Reisija mis tegelikult tähendab lihtsalt
et iga objekt on sama põhiväärtus paari.
Nii et iga objekti tüüp reisija kasutaja nimi, nimi ja maja.
Niisiis, mida me peame teha p-set?
Noh, meil on vaja, et kasutajad saaksid valida üles töötajaga kuva kõik
töötajad, mis on praegu Meie buss ja tilk need ära.
Ja siis me räägime ka pildi elemente, mida saab rakendada
Shuttle p-set.
>> Aga räägime pikap esimene.
Nägu CS50 personal on istutada kogu campus, kus iga
nägu on rakendatud koht märk 3D Maa ja nagu
SM 2D kaardi.
Nii et kui kasutaja klõpsab Pickup nuppu, tahame lisada lähedal
reisijad buss.
Ja me tahame, et eemaldada oma koht märgi maailma ja eemaldada nende
markerit kaart, mis näitab, et nad on meie buss nüüd.
>> Niisiis, kuidas me avastada, kui reisijate tööraadius meie buss?
Noh, funktsioon kaugus, nii shuttle.distance, läbides
laius-ja pikkuskraadid, arvutab kaugus praegusest asukohast
shuttle niivõrd, et määrate selle antud
laius-ja pikkuskraadid.
Nii saab seda kasutada, et arvutada kaugus shuttle
reisijat.
>> Aga kuidas sa tead, kus reisijad on?
Noh, see on koht, kus me peame muuta asustada funktsioon.
Asustada kohad kõik töötajad reisijate maailma
ja kaardi sisse, aga ei salvestada oma asukohta.
Nii et ehk saate salvestada oma pange märgid ja markerid
mõnel globaalne massiiv.
>> Nüüd on juba olemas globaalne massiiv teabe säilitamise reisijatelt.
Reisijate hulga kauplustes iga reisija nimi ja oma maja.
Nii et äkki saate lisada mõned parameetrid seal reisijale objektid.
>> Selleks, et aidata meil tuvastada kõik reisijad levialas meie
buss, lähme silmus läbi kõik reisijatele reisijate hulga.
Loop JavaScript võiks välja midagi sellist, väga sarnane
nende jaoks silmuseid C või saame kasutada alternatiiv loop struktuur,
var i massiivi, kus ma ikkagi indeks, kuid sa ei pea
täpsustada array.length seisund ja i + +.
>> Iga reisija asukoht on arvestades nende koht märk.
Aga koht ei ole kaubamärk laius-ja pikkuskraadid.
Meil on juurdepääs nende parameetrite järgi saada geomeetria, kasutades GET
geomeetria koht märk, ja siis kui meil on geomeetria, saada
kas laius või pikkus- kasutades neid funktsioone.
>> Nüüd me teame, kuidas kindlaks teha, kas reisijad jooksul
Valik meie buss.
Kui meil on need reisijad, me tulen soovite lisada reisijad, kes on
selles vahemikus.
Me tahame, et neil oleks võimalik hop ja võtma koht oma shuttle, kuid ainult
kui meil on piisavalt ruumi, et neid.
>> Shuttle.seats array näitab kas istmed on tühi, või
kes on selle asukoht.
Nii et kui iste on tühi, siis et iste on null.
Nii Käi istmed massiiv, kontrollimine tühjad kohad, hoidmine
reisijaid need istmed, kuni olete ei ole enam tühjad kohad.
Ja kahjuks muid reisijaid ei pea ootama
Järgmine kord shuttle taandub.
>> Kui nad on shuttle, me tahame kõrvaldada nende koht märk, mis
on ka foto 3D maailmas.
Kui ma tahan, et eemaldada koht märk p, siis ma saaksin kõik funktsioonid
minu Earth, Google Earth, ja eemaldab selle konkreetse koha
märgi abil removeChild funktsioon.
Siis lõpuks, olgem eemaldada marker, ikooni 2D kaardi, mis tahes
reisija, et me hoogustumas.
>> Eemaldamiseks marker m, siis ma lihtsalt ellu m.setMap null.
Kas see reisijate levialas, ja olete valmis pikap.
Graafik funktsioon peaks kuva kõik reisijate, mis on teie
buss ja tühi koht kui tühi.
Nii skeem peaks Käi shuttle.seats väljapanek
reisija iga indeksi kohta, ja tühi koht, kui see indeks on null.
>> Nüüd, kui HTML tekst pannakse sees JavaScript muutuja, siis kasutades
document.getElementById, diagrammi saab muuta sisemine HTML et antud
element, määrates HTML teksti
document.getElementById sisemine HTML muutuja.
Kui kasutajad klõpsavad Drop Off nupp aastal index.html, siis helistan
dropoff funktsioon.
Ja see on meie töö, et rakendada seda.
>> In dropoff, me tahame, et eemaldada reisijate shuttle ainult siis, kui
me oleme vahemikus oma sihtkohta, oma elamu.
Nii dropoff on kontrollida, kas Ligipääs on vahemikus mõni
maja ja kõrvaldada kõik vajalikud reisijaid buss.
Niisiis, kuidas me vaadata, kas me oleme vahemikus iga maja?
Noh, veel kord, me kasutada shuttle.distance funktsioon, mis kulgeb
laius-ja pikkuskraad punkti et me kontrollime vastu.
>> Aga millised on need punktid?
Noh, majade massiivi, kui see teile meenub aastal houses.js, salvestab
laius-ja pikkuskraadid iga maja assotsiatiivne massiiv, kus iga
indeks on nimi, mis maja.
Seejärel eemaldada reisijatele -
hästi ainult siis, kui me oleme nende erinevatest maja, et nad tahavad minna.
Nii et taas, pea meeles, et reisijate salvestab maja, et iga reisija
tahab minna.
Kui nad on levialas oma maja, siis me kõrvaldame et
reisijatel shuttle.seats ja komplekt oma seisukoha massiivi tühjaks.
>> Nüüd räägime mõned lisafunktsioone mida saab rakendada
CS50 Shuttle p-set.
Seal punkti süsteemi, mille teil jälgida, kui palju
juhib kasutaja.
Sest lahkuvad reisijad edukalt, võivad nad saada punkte.
Aga püüame lahkuvad reisijad kui seal ei ole ühtegi maja lähedal,
Noh, nad saavad karistada selle eest.
Nii et ehk soovite jälgida punkte globaalne muutuja.
>> Saate rakendada ehk taimer, kus kasutaja on teatud summa
aja kiirenemist ja tilk maha teatud arvu reisijaid.
Võib-olla isegi integreerida see koos punktisüsteemi.
Või saate muuta Chart selline, et reisijad on järjestatud vastavalt maja.
Nii et ilmselt oleks omamoodi funktsiooni shuttle.seats.
>> Saate rakendada sõidavad funktsiooni kus kui kasutaja sisestab Konami
kood, siis shuttle liftid off maa ja buss saab sõita.
Aga ohutu drop off, parim teha shuttle maanduda oma rattad
esimesena maad.
Võite rakendada teleportatsioon, kus te teete rippmenüüst
hoonete index.html.
Ja valida üks neist, kasutaja transporditakse
et hoone ülikoolilinnak.
OK, aga reisida läbi seinad mõnede
hoonete teed seal.
>> Saate muuta ka kiirust Ligipääs, võimaldades kasutajal suurendada
või kiirust vähendama.
Ehk soovid globaalne muutuja jälgida, kui palju kütust
buss on, vähenedes see lähete mööda.
Kui oled tabanud null, kuigi buss ei saa liikuda, kui olete
tangitakse, ehk kasutades nuppu või isegi teha oma tankla.
>> Aga see ei ole kindlasti mitte ammendavat loetelu.
Tutvu spec täieliku Listi ehk ettepanekuid
enda oma TF.
Taevas on piir.
See on sinu viimane CS50 p-set, nii nautige seda.
See oli CS50 Shuttle.
>> Ma pean ütlema, et see on olnud rõõm muutes need teile
tootmise meeskond.
Ja ma loodan, et olete nautida neid samuti.
Minu nimi on Zamyla.
Ja see oli CS50.