[Musikk spilles] SPEAKER 1: Vel, her er vi, den siste P satt i CS50. Gratuler dere fra å ha kommet så langt siden den første hallo verdener og skrive ut pyramidene for Mario. Du har gjort en nettside i forrige uke. Og vi kommer til å være å gjøre en annen denne uken, en som lar deg kjøre rundt i Harvard campus, plukking opp CS50 ansatte, og å bringe dem tilbake til deres bolighus. Nå forrige uke jobbet vi i PHP, en server side språk. For denne P sett, vi blir introdusert til Javascript, noe som er en klientsiden språk. Så la oss ta en titt på noen av de distribusjon kode som er gitt til du for denne P settet. I Javascript-mappen, det vil være en haug av Javascript-filer. Det er buildings.js, som inneholder en rekke bygninger rundt Harvard campus, med sin informasjon og posisjon. Houses.js er en rekke Harvard bolighus, med deres breddegrader og lengdegrader. Passengers.js inneholder en rekke passasjerer - Det CS50 ansatte - at du skal bringe tilbake til sine boliger. Math3D.js, som inneholder mye funksjoner å gjøre med bevegelsen. Hvis du er matematisk tenkende, så jeg ønsker deg velkommen ta en titt. Men du trenger ikke å forstå alt der inne. Shuttle.js, som omhandler romfergens bevegelse. Og index.html er hjemmesiden der alt som skjer, egentlig, hvor brukeren er i samspill med området. Service.css er CSS-stilark, som, i tillegg til den Twitter Bootstrap bibliotek, kontroller hvordan index.html utseende. Og så har vi også service.js, som inneholder servicefunksjoner for romfergen. Og her er hvor du kommer til å være fylle noen av de til dos. La oss nå ta en titt på objektene og assosiative arrays i Javascript, som for alle praktiske formål er utskiftbare. Hvis jeg ønsket å lage et objekt en variabel kalt en tryllestav, jeg ville erklære det. Og inne i disse klammeparentes jeg ville spesifisere kjernen er enhjørning. Veden er kirsebær. Og lengden er 13. Nå kan jeg også få tilgang til verdier av objekter ved hjelp assosiativ matrise notasjon. Så wand indeksen kjerne, kan jeg stille som lik enhjørning, eller sjekk at, hvis jeg trenger. Eller jeg kan bruke dot operatør. Wand dot tre lik kirsebær, og så videre, og så videre. Så du ser at assosiative matriser og objekter i Java kommer til å være utskiftbare, og vilje kommer i ganske hendig. Så ser vi en rekke bygninger i buildings.js. Igjen, en rekke gjenstander. Hvis jeg ønsket å gjøre en rekke av de beste bygninger på Harvard campus, deretter Jeg ville gjøre det på følgende måte. Ved hjelp av dette objektet notasjon, der Jeg lagrer roten, navn, adresse, breddegrad og lengdegrad for hver enkelt bygning objekt. La oss raskt snakke om variabler i Javascript. Som PHP, Javascript variabler er svakt eller løst skrevet. For å opprette en lokal variabel, prefiks deg variabelnavnet med V-A-R, var. Nå i Javascript, funksjoner vil begrense omfanget av variabler. Så hvis du har en lokal variabel i en funksjon og andre funksjoner kan ikke tilgang til den. Men i motsetning til C, løkker og betingelser ikke begrense omfanget av en variabel. Så selv om du erklærer det inne i en tilstand, vil hele funksjonen har tilgang til det. Nå uten var, variabelen vil være global. Så hvis du bare erklære navnet og tilordne en verdi, da den variabelen vil være en global variabel i Javascript. Nå i hus, har vi en assosiativ matrise av huset typen objekter, der hvert hus er bare en breddegrad og en lengdegrad. Da har vi passasjerene matrise, som er en matrise av objekttype passasjer. Så hver passasjer har et brukernavn, et navn, og et hus. Legg merke til at jeg ser av type passasjer, som egentlig bare betyr at hvert objekt har samme suse_register_auto.ycp. Så hver objekt av typen passasjer har et brukernavn, et navn, og et hus. Så hva trenger vi å gjøre for P sett? Vel, vi trenger å tillate brukere å plukke opp ansatte, for å vise alle de ansatte som er i vår transport, og å slippe dem av. Og da vil vi også snakke om ekstra funksjoner som kan implementeres for shuttle P sett. Men la oss snakke om pickup først. Ansiktene til CS50 ansatte har vært plantet over hele campus, hvor hver ansiktet er implementert som et sted mark på 3D-jord, og som en markør på 2D-kartet. Så når brukeren klikker pickup knappen, vil vi legge til i nærheten passasjerer til romfergen. Og vi ønsker også å fjerne sin plass Mark fra hele verden, og fjerne deres markeringen fra kartet, som indikerer at de er i vår shuttle nå. Så hvordan kan vi oppdage om passasjerene er innenfor rekkevidde av vår transport? Vel, funksjonen avstand - så shuttle dot avstand, passerer i breddegrad og lengdegrad, vil beregne avstanden fra den aktuelle stillingen av pendel til peke på at du angir med at gitt breddegrad og lengdegrad. Så du kan bruke dette til å beregne avstand fra transport til passasjerer. Men hvordan vet du hvor passasjerene er? Vel, det er der vi må redigere befolke funksjon. Fylle steder alle de ansatte og passasjerer inn i verden, og inn i kartet, men ikke lagre deres plassering. Så kanskje du kan oppbevare plassere merker og markører i noen global array. Nå er det allerede en global matrise lagring av informasjon fra passasjerene. Passasjerene array-butikker hver passasjerens navn og huset deres. Så kanskje du kan legge til et par parametere det til personobjekter. For å hjelpe oss å oppdage alle passasjerene innenfor rekkevidde av vår transport, la oss sløyfe gjennom alle passasjerene i passasjerer array. En for løkke i Javascript, kan se noe sånt som dette, svært lik de for sløyfe i C. Eller vi kan bruke en alternativ for loop struktur. For Var jeg i matrise, hvor jeg vil fortsatt være indeksen. Men du trenger ikke å spesifisere matrisen dot lengde tilstand, og jeg pluss pluss. Hver passasjerens posisjon er gitt av sin plass mark. Men stedet merket er ikke den breddegrad og lengdegrad. Vi må få tilgang til disse parametrene ved få geometri, å bruke Get geometri på stedet mark. Og så når vi har geometri, får enten breddegrad eller lengdegrad, ved hjelp av disse funksjonene. Så nå vet vi hvordan å oppdage om passasjerer er innenfor Utvalget av våre shuttle. Når vi har disse passasjerene, vil vi ønsker å legge til noen passasjerer som er innenfor dette området. Vi ønsker å tillate dem å hoppe på, og ta plass på vår shuttle, men bare hvis vi har nok plass til dem. Shuttle dot seter utvalg vil indikere om setene er tomme, eller hvem som er i det setet. Så hvis et sete er tomt, så at setet skal være null. Så iterere over setene array, sjekker for tomme seter, lagring passasjerer i setene til du har ikke noen flere tomme seter. Og dessverre, noen andre passasjerer blir nødt til å vente på neste gang romfergen kommer rundt. Når de kommer på romfergen, vil vi ønsker å fjerne sin plass mark, som er deres bilde i 3D-verden. Hvis jeg ønsket å fjerne et sted mark p, da ville jeg få alle funksjonene fra min jord, fra Google Earth, og fjern deretter bestemt sted markere ved hjelp removeChild funksjon. Så til slutt, la oss fjerne markøren, ikonet på 2D-kartet for ethvert passasjer som vi plukker opp. Hvis du vil fjerne en markør, m, så skal jeg bare kjøre m dot setMap null. Gjør dette for alle passasjerer som er innenfor rekkevidde, og du er ferdig pickup.