>> [Musikgengivelse]
>> SPEAKER 1: Nå, her er vi, den sidste P-sæt i CS50.
Lykønsker jer fra at have kommet så langt, siden din første goddag
verdener og udskrive pyramider til Mario.
Du har lavet en hjemmeside i sidste uge.
Og vi kommer til at gøre en anden i denne uge, en, der giver dig mulighed for at
køre rundt i Harvard campus, plukke up medarbejdere CS50 og
bringe dem tilbage til deres beboelseshuse.
>> Nu i sidste uge arbejdede vi i PHP, en server side sprog.
For denne P-sæt, vi får introduceret til JavaScript, som er en
klientsiden sprog.
Så lad os tage et kig på nogle af de fordeling kode, der er leveret til
dig til dette P-sæt.
>> I mappen JavaScript, vil der være en flok JavaScript-filer.
Der er buildings.js, som indeholder en vifte af bygninger omkring Harvard
campus, med deres oplysninger og position.
Houses.js er en vifte af Harvard beboelseshuse, med deres
længde-og breddegrader.
Passengers.js indeholder en vifte af passagerer -
medarbejderne CS50 -
at du vil være at bringe tilbage til deres bolig huse.
>> Math3D.js, der indeholder en masse af funktioner at gøre med bevægelsen.
Hvis du er matematisk minded, så jeg glæder du tage et kig.
Men du behøver ikke at forstå alt derinde.
Shuttle.js, der beskæftiger sig med rumfærgens bevægelse.
Og index.html er den hjemmeside, hvor alting sker, virkelig, hvor
brugeren interagerer med webstedet.
>> Service.css er CSS style sheet, , som foruden til kvidre
Bootstrap bibliotek, kontrol hvordan index.html udseende.
Og så har vi også service.js, som indeholder servicefunktioner for
rumfærgen.
Og her er, hvor du kommer til at være udfylde nogle af de til dos.
>> Lad os nu tage et kig på objekter og associative arrays i JavaScript,
der for alle henseender er indbyrdes udskiftelige.
Hvis jeg ønskede at lave et objekt en variabel kaldes en tryllestav, ville jeg
erklære den.
Og inden for disse krøllede parenteser vil jeg specificere kernen er enhjørning.
Træet er kirsebær.
Og længden er 13.
>> Nu kan jeg også få adgang til værdier af objekter ved hjælp
associative array notation.
Så wand indeks kerne, kan jeg indstille der svarer til enhjørning, eller
kontrollere, at hvis jeg har brug for.
Eller jeg kan bruge dot operatør.
Wand dot træ lig kirsebær, og så videre, og så videre.
Så du kan se, at associative arrays og objekter i JavaScript vil være
udskiftelige, og vilje komme i ganske handy.
>> Så ser vi en vifte af bygninger i buildings.js.
Igen, en række af objekter.
Hvis jeg ønskede at gøre en række af de bedste bygninger på Harvard campus, derefter
Jeg ville gøre det som følger.
Ved hjælp af dette objekt notation, hvor Jeg gemmer roden, navn, adresse,
breddegrad og længdegrad for hver enkelt bygning objekt.
>> Lad os hurtigt tale om variable i JavaScript.
Som PHP, JavaScript variabler er svagt eller løst skrevet.
Hvis du vil oprette en lokal variabel, du præfiks variabelnavnet med V-A-R, var.
>> Nu i JavaScript, funktioner begrænse omfanget af variabler.
Så hvis du har en lokal variabel i en funktion, så andre funktioner
kan ikke få adgang til den.
Men i modsætning til C, loops og betingelser ikke begrænse omfanget af en variabel.
>> Så selv hvis du erklære den inde i en tilstand, hele funktionen vil
har adgang til det.
Nu uden var variablen vil være global.
Så hvis du bare erklære navn og tildele en værdi, så er variabel
vil være en global variabel i JavaScript.
>> Nu i huse, har vi en associativ vifte af hus tekstobjekter, hvor
hvert hus er blot en breddegrad og en længde.
Så har vi passagererne array, som er en matrix
af objekttypen passager.
Så hver passager har et brugernavn, et navn, og et hus.
Bemærk, at jeg ser af type passager, som virkelig bare betyder
at hvert objekt har samme nøgle værdi par.
Så hver objekt af typen passageren har et brugernavn, et navn og et hus.
>> Så hvad skal vi gøre for P sæt?
Nå, vi er nødt til at tillade brugere at plukke up ansatte at vise alle
de ansatte, der i øjeblikket vores bus til at slippe dem ud.
Og så vil vi også tale om ekstra funktioner, der kan gennemføres for
shuttle P sæt.
>> Men lad os tale om afhentning først.
Ansigter CS50 personale har været plantet over hele campus, hvor hver
ansigt er implementeret som et sted mærke på 3D jorden, og som et
markør på 2D-kort.
Så når brugeren klikker på pickup knap, vi ønsker at tilføje nærheden
passagerer til rumfærgen.
Og vi ønsker også at fjerne deres plads markere fra verden, og fjerne deres
markør på kortet, som angiver, at de er i vores shuttle nu.
>> Så hvordan kan vi opdage, hvis passagerer er inden for rækkevidde af vores shuttle?
Nå, den funktion distance -
så shuttle dot afstand, passerer længde-og breddegrad, vil
beregne afstanden fra den aktuelle position af rumfærgen til
peger som du angiver med at given bredde og længde.
Så du kan bruge dette til at beregne afstand fra rumfærgen til
passagerer.
>> Men hvordan kan du vide, hvor passagererne er?
Nå, det er, hvor vi bliver nødt til at redigere populate funktionen.
Befolke steder alle de ansatte og passagerer ind i verden,
og ind på kortet, men ikke gemme deres placering.
Så måske du kan gemme deres anbringe mærker og markører
i nogle globale array.
>> Allerede nu er der en global matrix lagring af oplysninger fra passagererne.
Passagererne array-butikker hver passagerens navn og deres hus.
Så måske du kan tilføje nogle få parametre der til de passager objekter.
>> For at hjælpe os med at opdage alle passagerer inden for rækkevidde af vores shuttle, lad os
løkke gennem alle de passagerer i passagerer array.
En for-løkke i JavaScript kan se noget som dette, meget lig
dem, for løkke i C. Eller vi kan bruge en alternativ til loop-struktur.
>> For var jeg i array, hvor jeg vil stadig være indekset.
Men du behøver ikke at specificere array dot længde
tilstand, og jeg plus plus.
Hver passager placering er afgivet deres plads mærke.
>> Men stedet mærke er ikke det breddegrad og længdegrad.
Vi er nødt til at få adgang til disse parametre ved få geometri, ved hjælp af get
geometri på stedmarkør.
Og så når vi har den geometri, få enten bredde eller
længdegrad, ved hjælp af disse funktioner.
>> Så nu ved vi, hvordan man kan afsløre, om passagerer er inden
Rækken af ​​vores shuttle.
Når vi har disse passagerer, vi får ønsker at tilføje passagerer, der er
inden for dette område.
Vi ønsker at give dem mulighed for at hoppe på, og tage en plads på vores shuttle, men kun
hvis vi har plads nok til dem.
>> Rumfærgen dot sæder array angive, om sæderne er tomme, eller
der er i det sæde.
Så hvis et sæde er tomt, så at sædet vil være nul.
Så gentage over sæderne array, kontrol for tomme sæder, lagring
passagerer ind disse sæder, indtil du ikke har nogen flere tomme sæder.
Og desværre alle andre passagerer bliver nødt til at vente på
næste gang rumfærgen kommer rundt.
>> Når de får på rumfærgen, vi ønsker at fjerne deres sted mærke, som
er deres foto i 3D-verden.
Hvis jeg ønskede at fjerne et sted mark p, så ville jeg få alle de funktioner,
fra min jord, fra Google Earth og derefter fjerne det specifikke sted
markere bruge removeChild funktionen.
Så endelig, lad os fjerne markeringen ikonet på 2D-kort for enhver
passager, som vi er picking up.
For at fjerne en markør, m, så vil jeg bare udføre m dot setMap null.
Gør dette for passagerer inden for rækkevidde, og du er færdig med pickup.