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.