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.