ZAMYLA Chan: No, tässä me olemme, viimeinen p-asetettu CS50. Onnittelen itse saamasta edennyt niin pitkälle, koska ensimmäinen Hei Maailmoja ja tulostaminen Up 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 toimihenkilöille ja tuo heidät takaisin asuinrakennusta. Nyt viime viikolla teimme PHP, palvelimen puolella kieltä. Tästä p-sarja, menemme käyttöön JavaScript, joka on asiakkaan puolella kieltä. Joten katsotaanpa katsomaan joitakin jakelu-koodi, joka annetaan teitä tästä p-set. 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 kanssa leveys-ja pituusaste. Passengers.js sisältää erilaisia matkustajat, CS50 toimihenkilöille että sinulla on tuo takaisin niiden asuinrakennusta. Math3D.js, joka sisältää paljon toimintoja tekemistä liikkeen. Jos olet matemaattisesti ajattelevia, niin Toivotan teidät tervetulleeksi katsomaan. Mutta sinun ei tarvitse ymmärtää Kaikki siellä. Shuttle.js, joka käsittelee Shuttlen liikettä. Ja index.html on kotisivu, josta kaikki tapahtuu, todella, jos käyttäjä on vuorovaikutuksessa sivuston. Service.css on CSS tyylisivu, joka lisäksi Twitter Bootstrap Library, 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 to-do: n. 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 täsmentää, 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.wood vastaa 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, erilaisia ​​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 taloissa, meillä on assosiatiivinen joukko isäntä tyypin 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än nimi, nimi, ja talon. Huomaa, että sanon tyypin matkustaja, joka todella tarkoittaa vain sitä että jokainen esine on samalla avaimella arvo-pareja. 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-set. Mutta puhutaanpa pickup ensin. Kasvot CS50 työntekijät ovat olleet istutettu ympäri kampusta, jossa kukin kasvot on toteutettu paikka merkki 3D-maapallolla, 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 poistaa 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.distance, ohimennen leveyttä ja pituutta, laskee etäisyys nykyisestä sijainnista sukkulan siihen pisteeseen, että voit määrittää sen kanssa annetaan 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 Matkustajamäärien maailmaan ja osaksi karttaa, mutta ei tallentaa niiden sijainti. Joten ehkä voit tallentaa niiden aseta merkit ja tussit Joissakin globaali array. Nyt on jo olemassa maailmanlaajuinen array tallentamiseen tietoja matkustajista. Matkustajien array tallentaa kunkin matkustajan nimi ja heidän talonsa. Joten ehkä voit lisätä muutama parametri siellä matkustaja esineitä. Auttaa meitä havaitsemaan kaikkia matkustajia kuuluvuusalueella meidän shuttle, nyt silmukan läpi kaikki matkustajille matkustajien jono. Silmukan JavaScript voisi näyttää jotain tällaista, hyvin samankaltainen nämä silmukkahakujasi C. Tai voimme käyttää vaihtoehto silmukkarakenteen varten var i array, jossa i on silti indeksin, mutta sinun ei tarvitse Määritä array.length kunnossa ja i + +. 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 pituusaste 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 mahdollisuuden hypätä ja ottaa istuin meidän shuttle, mutta vain jos meillä on tarpeeksi tilaa heille. Shuttle.seats array osoittaa 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 alas. 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 Earth 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 merkki m, sitten minä tietenkään suorita m.setMap null. Tee tämä matkustajia ulottuvilla, ja olet valmis pickup. Kaavio toiminto pitäisi näyttää kaikki matkustajista, jotka ovat teidän bussikuljetus ja tyhjä paikka, jos tyhjiä. Joten kaavion pitäisi kerrata yli shuttle.seats, näytetään matkustajatietojen jokaiselle indeksi, ja tyhjä paikka, jos indeksi on nolla. Nyt jos HTML teksti on laittaa sisälle JavaScript muuttuja, sitten käyttämällä document.getElementById, Kaavio voi muokata sisäinen HTML siitä, mitä saadaan elementti nimeämällä HTML tekstin document.getElementById sisempi HTML muuttuja. Kun käyttäjät napsauttavat Drop Off-painiketta vuonna index.html, se soitan dropoff toiminto. Ja se on meidän tehtävämme toteuttaa sitä. Vuonna dropoff, me haluamme poistaa matkustajia shuttle vain, jos olemme erilaisia ​​määränpäähänsä, niiden asuintalo. Joten dropoff täytyy tarkistaa, onko sukkula on välillä tahansa taloja, ja poista kaikki tarvittavat matkustajia shuttle. Miten siis tarkistaa, jos olemme kantaman tahansa taloja? No, jälleen kerran, me hyödyntää shuttle.distance toiminto, ohimennen pituus-ja leveyspiiri pisteen että me tarkastamme vastaan. Mutta mitä ovat ne kohdat? No, talot array, jos muistat vuonna houses.js, tallentaa pituus-ja leveysasteiden kunkin talon assosiatiivisia array, jossa jokainen indeksi on nimi, että talon. Sitten poistaa matkustajia - hyvin, vain jos olemme kantaman heidän talo, että he haluavat mennä. Joten jälleen, muista, että matkustajat tallentaa talo, että jokainen matkustaja haluaa mennä. Jos ne ovat erilaisia ​​niiden talo, niin poistamme että matkustajan shuttle.seats ja asettaa asemansa array nollaksi. Nyt Puhutaanpa joitakin lisäominaisuuksia , joka voidaan toteuttaa CS50 Shuttle p-set. Tuossa on järjestelmä, jonka avulla voit seurata, kuinka monta huomauttaa käyttäjällä on. Pudottamalla pois matkustajia onnistuneesti, he voivat saada pisteitä. Mutta yrittää pudottaa pois matkustajia jos ei ole mitään talon lähellä, hyvin, he voivat saada rangaista siitä. Joten ehkä haluat seurata pistettä globaali muuttuja. Voit toteuttaa ehkä ajastin, jossa käyttäjällä on tietty määrä aikaa poimia ja pudota pois tietty määrä matkustajia. Ehkä jopa integroida tämän kanssa pisteytysjärjestelmä. Tai voit Muokkaa kaaviota siten, että matkustajat ovat järjestetty talon. Jotta olisi todennäköisesti eräänlainen toimiakseen to shuttle.seats. Voit toteuttaa lentävät ominaisuus, jossa, jos käyttäjä syöttää Konami koodi ja sukkula irtoaa maahan ja sukkula voi lentää. Mutta turvallinen pudota pois, parasta tehdä shuttle purkamaan pyörät ensimmäisenä maahan. Voit myös toteuttaa teleportaatio, jos teet avattavaa rakennusten index.html. Ja valitaan yksi niistä, Käyttäjä kuljetetaan että rakennus kampuksella. OK, kuitenkin kulkea seinät joidenkin Rakennusten matkalla sinne. Voit myös vaihtaa nopeutta sukkula, jonka avulla käyttäjä voi lisätä tai vähentää nopeutta. Ehkä haluat globaali muuttuja seurata, kuinka paljon polttoainetta sukkula on, vähentämällä se matkan varrella. Kun osut nolla, vaikka, sukkula ei voi liikkua, paitsi jos olet tankattiin, ehkä käyttämällä painiketta tai jopa tehdä oman huoltoasema. Mutta se ei tietenkään ole tyhjentävä luettelo. Tutustu spec koko listata, tai ehkä ehdottaa omia oman TF. Taivas on rajana. Tämä on viimeinen CS50 p-set, joten pitää hauskaa sen kanssa. Tämä oli CS50 Shuttle. Minun täytyy sanoa, se on ollut ilo tekevät näitä sinulle tuotantotiimi. Ja toivon, että olet nauttia niistä, samoin. Nimeni on Zamyla. Ja tämä oli CS50.