>> ZAMYLA Chan: Pa, ovdje smo, Posljednji p-set u CS50.
Sami čestitam od vlasništvo dođe do sada od prvog Pozdrav
Prvenstva i ispis Gore Piramide za Mario.
Vi napravili web stranice prošli tjedan.
I mi ćemo biti stvaranje još jednog ovaj tjedan, onaj koji vam omogućuje da se
voziti okolo u kampusu Sveučilišta Harvard, branje do CS50 članova osoblja i
ih vraćaju na svoje stambenih kuća.
>> Sada, prošli tjedan smo radili u PHP-u, strani jezik poslužitelja.
Za ovu p-set, mi smo upoznavanje JavaScript, koji je
klijent strani jezik.
Tako ćemo pogledati neke od Raspodjela kod koji je pod uvjetom da se
ste za ovaj p-set.
U JavaScripta mapu, bit biti hrpa JavaScript datotekama.
>> Postoji buildings.js, koji sadrži niz objekata oko Harvardu
kampus sa svojim podacima i položaj.
Houses.js je niz Harvardu stambene kuće sa svojim
geografskim širinama i dužinama.
Passengers.js sadrži niz putnika, članovi CS50 osoblje
da ćete se vraćaju u njihove stambene kuće.
>> Math3D.js, koji sadrži mnogo Funkcije koje treba učiniti s kretanjem.
Ako ste matematički istomišljenika, a zatim Pozdravljam vas da se pogledati.
No, ne morate razumjeti sve tamo.
Shuttle.js, koja se bavi Pokret se shuttle-a.
I index.html je početna stranica, gdje sve što se događa, stvarno, gdje
Korisnik je u interakciji s web stranice.
>> Service.css je CSS style sheet, koji uz Twitter
Bootstrap knjižnica, kontrole Kako index.html izgleda.
A onda imamo i service.js, koji sadrži funkcije usluga za
Shuttle.
A evo gdje ćeš biti Ispunjavajući neke od do-do-a.
>> Sada ćemo pogledati na objekte i asocijativne polja u JavaScriptu,
koji je, za sve namjere i svrhe, su zamjenjivi.
Ako sam htjela napraviti objekt varijablu zove štapić, ja bih
proglasi ga.
A unutar tih vitičastim zagradama, ja bih navesti, jezgra je jednorog, drvo
je trešnja, a duljina je 13.
>> Sada, ja mogu pristupiti vrijednosti objekata s
asocijativno polje zapis.
Dakle štapić indeks jezgre, mogu postaviti da je jednak jednoroga, ili
provjeriti da li trebam.
Ili mogu koristiti operator dot wand.wood jednako trešnje, a
tako dalje i tako dalje.
Pa vidiš da asocijativne polja i objekti u JavaScriptu će biti
zamjenjivi, a volja dolaze u vrlo zgodan.
>> Tada vidimo niz zgrada u buildings.js,
Ponovno, niz objekata.
Ako sam htjela napraviti niz najbolji Zgrade na kampusu Sveučilišta Harvard, zatim
Ja bih to učiniti na sljedeći način.
Koristeći ovaj objekt zapis, gdje Ja pohraniti korijena, ime i prezime, adresu,
zemljopisna širina, i dužina za svaki jednoj zgradi objekt.
>> Idemo brzo govoriti o varijabli u JavaScript.
Kao i PHP, JavaScript varijable su slabo ili labavo upisali.
Za stvaranje lokalne varijable, što prefiks ime varijable s V-A-R, var.
Sada, u JavaScriptu, funkcije neće ograničiti opseg varijabli.
Dakle, ako imate lokalnu varijablu unutar Function, tada druge funkcije
Ne mogu mu pristupiti.
>> No, za razliku od C, petlje i uvjeta ne ograničiti opseg varijable.
Dakle, čak i ako ga proglasiti unutar uvjet, cijela funkcija će
imati pristup do njega.
Sada, bez var, promjenjiva će biti globalna.
Dakle, ako ste upravo proglasiti ime i dodijeliti vrijednost, onda je varijabla
će se globalna varijabla u JavaScript.
>> Sada, u kućama, imamo asocijativni Niz tipa domaćin objekata, gdje
svaka kuća je samo zemljopisna širina i dužine.
Onda imamo putnika polje, što je niz
tipa objekta putnika.
Dakle, svaki putnik ima korisnik ime, ime, i kuću.
>> Uočite da govorim o tipu putnika, koji je zapravo samo znači
da svaki objekt ima Isti ključ parova vrijednosti.
Dakle, svaki objekt tipa putnika ima korisničko ime, ime i prezime, i kuća.
Dakle, ono što trebamo učiniti za p-set?
Pa, moramo omogućiti korisnicima da odaberete do članova osoblja, kako bi prikazali sve
članovi osoblja koji su trenutno u naš prijevoz, a da ih spadati.
A onda ćemo također razgovarati o extra značajke koje se mogu provesti za
Shuttle p-set.
>> No, pričajmo o kurva prva.
Lica CS50 osoblja su posađeno cijelom kampusu, gdje je svaka
Lice je implementiran kao oznake mjesta na 3D Zemlji, i kao
marker na karti 2D.
Dakle, kada korisnik klikne podizača gumb, želimo staviti u blizini
Putnici na besplatan prijevoz.
I mi također želimo ukloniti svoje mjesto Marka iz svijeta i ukloniti svoje
marker s karte, što znači da oni su u našoj besplatan prijevoz sada.
>> Pa kako ćemo otkriti da li putnici u dometu naše luke?
Pa, funkcija udaljenost, pa shuttle.distance, prolazi u
širinu i dužinu, će izračunati udaljenost od trenutne pozicije
od prijevoza do te mjere da navedete s obzirom da je
zemljopisne širine i dužine.
Na taj način možete koristiti ovaj izračunati udaljenost od luke do
putnici.
>> Ali kako znaš gdje su putnici?
Pa, to je mjesto gdje ćemo morati urediti funkciju popuniti.
Popuniti mjesta sve od članova osoblja u putnika u svijetu
i na kartu, ali ne pohraniti svoje mjesto.
Pa možda možete pohraniti svoje stavljati oznake i markere
u nekom globalnom polju.
>> Sada, postoji već je globalni niz pohranu podataka od putnika.
Putnici Polje trgovinama svaka Naziv putnika i njihova kuća.
Dakle, možda možete dodati nekoliko parametara ima na putničkim objekata.
>> Da bi nam pomoći u pronalaženju svih putnika unutar raspona od naših
shuttle, neka je petlja kroz sve putnici u nizu putnika.
Za petlju u JavaScriptu može izgledati ovako nešto, vrlo sličan
one za petlje u C ili možemo koristiti alternativa za strukturu petlje, za
var sam u polju, gdje sam i dalje će biti index, ali vi ne morate
navesti array.length Stanje i ja + +.
>> Položaj svakog putnika je dao je svoje mjesto oznake.
Ali mark mjesto nije zemljopisna širina i dužina.
Moramo pristupiti one parametre uzimajući geometriju, pomoću get
geometriju na marku mjesto, a zatim Jednom smo geometriju, uzimajući
bilo zemljopisna širina ili dužine pomoću tih funkcija.
>> Tako sada znamo kako otkriti da li Putnici su unutar
Raspon naše luke.
Kad budemo imali su putnici, mi ćemo želite dodati bilo putnika koji su
unutar tog raspona.
Želimo im omogućiti da hop na i uzeti Samo sjedište naše luke, ali
ako imamo dovoljno prostora za njih.
>> Shuttle.seats polje će ukazivati da li sjedala su prazna, ili
koji je u to mjesto.
Dakle, ako je sjedište je prazna, a zatim da sjedište će biti null.
Tako ponoviti preko sjedala niz, provjere praznih sjedala, skladištenje
Putnici u tim sjedalima dok ne Nemam ja više praznih mjesta.
I na žalost, bilo drugih putnika će morati čekati
Sljedeći put shuttle silazi.
>> Nakon što su dobili na besplatan prijevoz, mi ćemo željeti ukloniti svoje mjesto trag, koji
je njihova slika u 3D svijetu.
Ako sam htjela ukloniti mjesto mark p, onda bih dobiti sve značajke
iz moje zemlje, iz Google Earth, a zatim izvadite da određeno mjesto
označiti koristeći funkciju removeChild.
Onda na kraju, neka je ukloniti oznake, ikona na karti 2D, za bilo
Putnik koji smo branje gore.
>> Za uklanjanje marker m, onda ću samo izvršiti m.setMap null.
Učinite to za bilo putnika unutar raspona, a vi ste završili kurva.
Funkcija grafikon treba prikazati sve od putnika koji su u vašem
shuttle, a prazno sjedalo ako je prazna.
Dakle, karta bi trebala ponoviti tijekom shuttle.seats, prikazujući
Informacije putnika za svaki indeks, i prazno sjedalo ako je indeks null.
>> Sada, ako HTML Tekst je staviti unutar JavaScript promjenjiva, a zatim pomoću
document.getElementByID, grafikon može urediti unutarnje HTML-a koji s obzirom
Element dodjeljivanjem HTML tekst na
document.getElementByID unutarnje HTML promjenjiva.
Kada su korisnici kliknu gumb spadati u index.html, to će nazvati
dropoff funkcija.
I to je naš posao za provedbu toga.
>> U dropoff ćemo želite ukloniti bilo Putnici iz luke samo ako
mi smo se u rasponu od svoje odredište, njihova stambena kuća.
Dakle dropoff će morati provjeriti je li shuttle je u rasponu od bilo koje od
kuće, i uklonite bilo potrebno Putnici iz luke.
Pa kako ćemo provjeriti da li smo u rasponu od bilo koje kuće?
Pa, opet, mi ćemo iskoristiti shuttle.distance funkciju, prolazi u
širinu i dužinu od točke da smo provjera protiv.
>> No, ono što su one točke?
Pa, kuća polje, ako se sjećate u houses.js, pohranjuje
zemljopisne širine i dužine svake kuće u asocijativno polje, gdje je svaka
indeks je ime toj kući.
Zatim ukloniti putnika -
dobro, samo ako smo u rasponu od njihovog Kuća koja žele ići.
Pa opet, sjetite se da putnici pohranjuje u kuću da svaki putnik
želi ići.
Ako su u dometu njihovog kuća, onda ćemo maknuti da
Putnik iz shuttle.seats i skupa njihov položaj u nizu na nulu.
>> Sada ćemo govoriti o nekim dodatnim značajkama koji se može provesti u
CS50 Shuttle p-set.
Tu je sustav bodovanja kojim pratiti koliko
ukazuje korisnik ima.
Za prekidaju putnika Uspješno, oni mogu dobiti bodove.
No, zbog pokušaja da spadati putnika tamo gdje je nije bilo u blizini kuća,
dobro, oni mogu dobiti kažnjene za to.
Dakle, možda želite pratiti bodovi u globalnoj varijabli.
>> Možete provesti možda brojilo, gdje Korisnik ima određenu količinu
Vrijeme pokupiti i odvesti a. Određeni broj putnika.
Možda čak i integrirati to s bodovnim sustavom.
Ili možete urediti grafikon tako da Putnici su razvrstani prema kući.
Tako da će vjerojatno biti svojevrsna funkcionirati na shuttle.seats.
>> Možete provesti leteći značajku, gdje ako korisnik unese Konami
broj, a zatim shuttle podiže off Prizemlje i shuttle može letjeti.
Ali za sigurno spadati, najbolje je napraviti shuttle sletjeti kotače na
tlo na prvom mjestu.
Također možete provesti teleportacija, gdje napraviti padajući popis
zgrade u index.html.
I odabirom jedne od onih, Korisnik će biti prevezeni do
da je zgrada na kampusu.
OK, ipak, putovati kroz Zidovi su neki
objekti na putu tamo.
>> Također možete promijeniti brzinu shuttle, omogućujući korisniku da poveća
ili smanjiti brzinu.
Možda želite globalne varijable u pratiti koliko goriva
shuttle ima, smanjuje da kao što ide zajedno.
Nakon što pritisnete nulu, ipak, shuttle neće se moći kretati, osim ako ste
gorivom, možda preko tipke ili čak napraviti svoj vlastiti benzinska postaja.
>> No, to svakako nije iscrpan popis.
Provjerite spec. za punu popis, ili možda predložiti
sami na svoju TF.
Nebo je granica.
Ovo ti je zadnja CS50 p-set, pa zabavite se s njom.
To je CS50 prijevoz.
>> Moram reći, to je bio užitak čineći to za vas s
produkcijski tim.
I nadam se da ste uživati ​​u njima, kao dobro.
Moje ime je Zamyla.
A to je CS50.