[Musiikki soi] SPEAKER 1: No, tässä me olemme, viimeinen P asetettu CS50. Onnittelen itse saamasta edennyt niin pitkälle, koska ensimmäinen hei maailmoja ja tulostamalla pyramidit Mario. Teit verkkosivuilla viime viikolla. Ja aiomme olla tehdä toinen tällä viikolla, yksi, jonka avulla voit ajaa ympäri Harvardin kampuksella, poiminta up CS50 henkilökunnan jäsentä, ja tuo heidät takaisin asuinrakennusta. Nyt viime viikolla teimme PHP, palvelimen puolella kieltä. Tästä P joukko, menemme käyttöön JavaScript, joka on asiakkaan puolella kieltä. Joten katsotaanpa katsomaan joitakin jakelu-koodi, joka annetaan teitä tästä P asetettu. JavaScript-kansiossa, siellä olla joukko JavaScript-tiedostot. On buildings.js, joka sisältää joukko rakennuksia ympäri Harvard kampuksella, tietonsa ja sijainti. Houses.js on joukko Harvard asuinrakennusta, niiden leveys-ja pituusaste. Passengers.js sisältää joukko matkustajia - CS50 toimihenkilöille - että sinulla on tuo takaisin niiden asuinrakennusta. Math3D.js, joka sisältää paljon toimintoja tekemistä liikkeen. Jos olet matemaattisesti ajattelevia, Sitten Toivotan teidät katsomaan. Mutta sinun ei tarvitse ymmärtää Kaikki siellä. Shuttle.js, joka käsittelee sukkulan liikettä. Ja index.html on kotisivu, josta kaikki tapahtuu, todella, jos käyttäjä on vuorovaikutuksessa sivuston. Service.css on CSS tyylisivu, joka sen lisäksi, että Twitter Bootstrap kirjasto, hallintalaitteet miten index.html näyttää. Ja sitten meillä on myös service.js, joka sisältää palvelun toiminnot shuttle. Ja tässä on, jos aiot olla täyttämällä joitakin dos. Nyt katsomaan esineitä ja assosiatiiviset taulukot JavaScript, jotka kaikki aikomukset ja tarkoituksiin ovat vaihdettavissa. Jos haluaisin tehdä objektin muuttujan kutsutaan sauva, olisin julistaa sen. Ja sisältä nuo aaltosulkeita olisin määrittää ydin on yksisarvinen. Puu on kirsikka. Ja pituus on 13. Nyt voin myös käyttää arvoja esineiden avulla assosiatiivisia array merkintätapa. Joten sauva indeksi ydin, voin asettaa että sama yksisarvinen, tai tarkista, että, jos tarvitsen. Tai voin käyttää piste operaattori. Wand dot puuta antaa kirsikka, ja niin edelleen, ja niin edelleen. Niin näet, että assosiatiivisia taulukoita ja esineet JavaScript aiotaan vaihdettavissa, ja tahdon tulevat varsin kätevä. Sitten näemme erilaisia ​​rakennuksia vuonna buildings.js. Jälleen joukko esineitä. Jos haluaisin tehdä joukko paras rakennukset Harvardin kampuksella sitten Haluaisin tehdä sen seuraavasti. Käyttämällä tätä objektin muodossa, jossa Olen tallentaa juuri, nimi, osoite, leveyttä ja pituuspiirin jokaiselle yksi rakennus objektin. Katsotaanpa nopeasti puhua muuttujista JavaScript. Kuten PHP, JavaScript muuttujat ovat heikosti tai väljästi kirjoitettu. Voit luoda paikallinen muuttuja, voit etuliite muuttujan nimen V--R, var. Nyt JavaScript, toiminnot rajoittaa muuttujia. Joten jos sinulla on paikallinen muuttuja sisällä toiminto, sitten muut toiminnot voi käyttää sitä. Mutta toisin kuin C, silmukoita ja olosuhteet eivät rajata muuttuja. Joten vaikka et julistaa sen sisällä kunnossa, koko toiminto on pääsy siihen. Nyt ilman var, muuttuja on maailmanlaajuinen. Joten jos vain julistaa nimi ja määrittää arvon, että muuttuja on globaali muuttuja JavaScript. Nyt taloa, meillä on assosiatiivinen joukko talotyypistä esineitä, joissa jokainen talo on vain leveyttä ja pituutta. Sitten meillä on matkustajia array, joka on array objektin tyypin matkustaja. Joten jokainen matkustaja on käyttäjätunnus, nimi, ja talon. Huomaa, että näen tyypin matkustaja, joka todella tarkoittaa vain sitä että jokainen esine on Samassa sävellajissa arvopari. Joten jokainen esine tyypin matkustajalla on käyttäjätunnus, nimi, ja talon. Joten mitä meidän on tehdä P sarja? No, meidän täytyy avulla käyttäjät voivat valita up toimihenkilöiden näkyviin kaikki henkilökunnan jäsenet, jotka ovat tällä hetkellä meidän bussikuljetus ja pudottaa ne pois. Ja sitten me myös puhua ylimääräistä ominaisuuksia, jotka voidaan toteuttaa shuttle P asetettu. Mutta puhutaanpa pickup ensin. Kasvot CS50 työntekijät ovat olleet istutettu ympäri kampusta, jossa kukin kasvot on toteutettu paikka merkki 3D-maa, ja sillä merkitsin 2D-kartan. Joten kun käyttäjä napsauttaa pickup painiketta, haluamme lisätä lähistöllä matkustajia shuttle. Ja haluamme myös poistaa niiden paikka Merkitse maailmasta, ja poista niiden merkkiaine kartan, joka osoittaa, että he ovat meidän shuttle nyt. Miten siis havaita, jos matkustajia kuuluvuusalueella meidän sukkula? No, etäisyyden funktiona - joten shuttle dot kaukolaukauksen ohimennen leveyttä ja pituutta, tulee laskea etäisyys nykyisestä asemaa kuljetus kohta, jotka olet määrittänyt kanssa Annettu leveyttä ja pituutta. Voit siis käyttää tätä laskea etäisyys kuljetus matkustajia. Mutta mistä tiedät, missä matkustajat ovat? No, siitähän meidän täytyy muokata populate toiminto. Kansoittavat paikkoja kaikki henkilökunnan jäsenet ja matkustajat maailmaan, ja osaksi karttaa, mutta ei tallentaa niiden sijainti. Joten ehkä voit tallentaa niiden aseta merkit ja tussit Joissakin globaali array. Nyt jo on globaali array tallentamiseen tietoja matkustajista. Matkustajien array tallentaa kunkin matkustajan nimi ja heidän talonsa. Joten ehkä voit lisätä muutama parametri siellä matkustaja esineitä. Voit auttaa meitä havaitsemaan kaikki matkustajat kuuluvuusalueella meidän sukkula, katsotaanpa silmukan läpi kaikki matkustajat vuonna matkustajia array. Silmukan JavaScript voisi näyttää jotain tällaista, hyvin samankaltainen ne, silmukka C. Tai voimme käyttää vaihtoehto silmukka rakenne. Var i array, jossa olen on edelleen indeksi. Mutta sinun ei tarvitse määrittää array piste pituus kunnossa, ja minä plus plus. Jokaisella matkustajalla sijainti on antama paikkansa merkki. Mutta paikka tavaramerkki ei ole leveyttä ja pituutta. Meidän täytyy käyttää näitä parametreja saada geometria, GET geometrian paikka merkki. Ja sitten kun meillä on geometria, saada joko leveyttä tai pituutta, käyttää näitä toimintoja. Joten nyt me tiedämme, miten tunnistaa, onko matkustajat ovat Valikoima shuttle. Kun meillä on niitä matkustajia, näytämme haluat lisätä matkustajia, jotka ovat tällä alueella. Haluamme antaa heille hop, ja istahtaa meidän shuttle, mutta vain jos meillä on tarpeeksi tilaa heille. Shuttle dot paikkaa array ilmoitettava, onko istuimet ovat tyhjiä, tai kuka kyseiselle istuimelle. Joten jos istuin on tyhjä, että istuin on nolla. Joten kerrata yli paikkaa array, tarkistamalla tyhjiä paikkoja, tallentamiseen matkustajia istuimet kunnes ei ole enää tyhjiä paikkoja. Ja valitettavasti muita matkustajia on odotettava Seuraavan kerran sukkulan tulee noin. Kun he saavat sukkula, me haluamme riisumaan paikkaan merkki, joka on heidän kuvansa 3D-maailmassa. Jos haluaisin poistaa paikkaan merkin p, niin saisin kaikki ominaisuudet minun maa, alkaen Google Earth, ja irrota kyseisen paikan merkitä käyttämällä removeChild toimintoa. Sitten lopuksi, älkäämme poistaa merkinnän, kuvaketta 2D-kartan mistään henkilöauto että olemme poimien. Voit poistaa merkkiaine, m, niin minä tietenkään suorita m dot setMap null. Tee tämä matkustajia ulottuvilla, ja olet valmis pickup.