>> [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.