1 00:00:00,000 --> 00:00:00,988 2 00:00:00,988 --> 00:00:09,880 >> [Glazba svira] 3 00:00:09,880 --> 00:00:13,360 >> ZVUČNIK 1: Pa, ovdje smo, Posljednji P set u CS50. 4 00:00:13,360 --> 00:00:17,040 Sami čestitam od vlasništvo dođe do sada, jer je vaš prvi pozdraviti 5 00:00:17,040 --> 00:00:20,090 svjetovi i ispis Piramide za Mario. 6 00:00:20,090 --> 00:00:21,930 Vi napravili web stranice prošli tjedan. 7 00:00:21,930 --> 00:00:25,110 I mi ćemo biti stvaranje još jednog ovaj tjedan, onaj koji vam omogućuje da se 8 00:00:25,110 --> 00:00:28,570 voziti okolo u kampusu Sveučilišta Harvard, branje do članovi CS50 osoblje i 9 00:00:28,570 --> 00:00:31,910 ih vraćaju na svoje stambenih kuća. 10 00:00:31,910 --> 00:00:35,400 >> Sada je prošli tjedan smo radili u PHP-u, strani jezik poslužitelja. 11 00:00:35,400 --> 00:00:38,250 Za ovu P skupa, mi smo upoznavanje JavaScript, koji je 12 00:00:38,250 --> 00:00:40,600 klijent strani jezik. 13 00:00:40,600 --> 00:00:44,010 Tako ćemo pogledati neke od Raspodjela kod koji je pod uvjetom da se 14 00:00:44,010 --> 00:00:46,210 ste za ovaj P setu. 15 00:00:46,210 --> 00:00:49,700 >> U JavaScripta mapu, bit biti hrpa JavaScript datotekama. 16 00:00:49,700 --> 00:00:53,600 Postoji buildings.js, koji sadrži niz objekata oko Harvardu 17 00:00:53,600 --> 00:00:57,340 kampus, sa svojim informacijama i položaj. 18 00:00:57,340 --> 00:01:01,630 Houses.js je niz Harvardu stambene kuće, sa svojim 19 00:01:01,630 --> 00:01:04,030 geografskim širinama i dužinama. 20 00:01:04,030 --> 00:01:07,020 Passengers.js sadrži Niz putnika - 21 00:01:07,020 --> 00:01:08,600 članovi CS50 osoblja - 22 00:01:08,600 --> 00:01:11,640 da ćete se vraćaju u njihove stambene kuće. 23 00:01:11,640 --> 00:01:16,450 >> Math3D.js, koji sadrži mnogo Funkcije koje treba učiniti s kretanjem. 24 00:01:16,450 --> 00:01:19,500 Ako ste matematički istomišljenika, onda pozdravljam vas pogledati. 25 00:01:19,500 --> 00:01:23,530 No, ne morate razumjeti sve tamo. 26 00:01:23,530 --> 00:01:26,710 Shuttle.js, koja se bavi Pokret se shuttle-a. 27 00:01:26,710 --> 00:01:31,450 I index.html je početna stranica, gdje sve što se događa, stvarno, gdje 28 00:01:31,450 --> 00:01:33,610 Korisnik je u interakciji s web stranice. 29 00:01:33,610 --> 00:01:39,110 >> Service.css je CSS style sheet, koji, osim na Twitter 30 00:01:39,110 --> 00:01:43,960 Bootstrap knjižnica, kontrole Kako index.html izgleda. 31 00:01:43,960 --> 00:01:48,190 A onda imamo i service.js, koji sadrži funkcije usluga za 32 00:01:48,190 --> 00:01:49,010 shuttle. 33 00:01:49,010 --> 00:01:53,010 A evo gdje ćeš biti Ispunjavajući neke od dos. 34 00:01:53,010 --> 00:01:56,600 >> Sada ćemo pogledati na objekte i asocijativne polja u JavaScriptu, 35 00:01:56,600 --> 00:01:59,360 koji je za sve namjere i svrhe su zamjenjivi. 36 00:01:59,360 --> 00:02:03,030 Ako sam htjela napraviti objekt varijablu zove štapić, ja bih 37 00:02:03,030 --> 00:02:04,290 proglasi ga. 38 00:02:04,290 --> 00:02:08,789 A unutar tih vitičastim zagradama bih navesti jezgra je jednoroga. 39 00:02:08,789 --> 00:02:10,220 Drvo je trešnja. 40 00:02:10,220 --> 00:02:12,710 A duljina je 13. 41 00:02:12,710 --> 00:02:16,370 >> Sada sam se također može pristupiti vrijednosti objekata s 42 00:02:16,370 --> 00:02:18,270 asocijativno polje zapis. 43 00:02:18,270 --> 00:02:22,610 Dakle štapić indeks jezgre, mogu postaviti da je jednak jednoroga, ili 44 00:02:22,610 --> 00:02:24,710 provjerite da, ako moram. 45 00:02:24,710 --> 00:02:26,510 Ili mogu koristiti operator dot. 46 00:02:26,510 --> 00:02:30,280 Wand dot drva iznosi trešnja, i tako dalje, i tako dalje. 47 00:02:30,280 --> 00:02:33,930 Pa vidiš da asocijativne polja i objekti u JavaScriptu će biti 48 00:02:33,930 --> 00:02:37,720 zamjenjivi, a volja dolaze u vrlo zgodan. 49 00:02:37,720 --> 00:02:41,570 >> Tada vidimo niz zgrada u buildings.js. 50 00:02:41,570 --> 00:02:43,870 Opet, niz objekata. 51 00:02:43,870 --> 00:02:48,500 Ako sam htjela napraviti niz najbolji Zgrade na kampusu Sveučilišta Harvard, zatim 52 00:02:48,500 --> 00:02:49,710 Ja bih to učiniti na sljedeći način. 53 00:02:49,710 --> 00:02:55,250 Koristeći ovaj objekt zapis, gdje Ja pohraniti korijena, ime i prezime, adresu, 54 00:02:55,250 --> 00:03:00,260 zemljopisna širina, i dužina za svaki jednoj zgradi objekt. 55 00:03:00,260 --> 00:03:02,930 >> Idemo brzo govoriti o varijabli u JavaScript. 56 00:03:02,930 --> 00:03:07,760 Kao i PHP, JavaScript varijable su slabo ili labavo upisali. 57 00:03:07,760 --> 00:03:14,120 Za stvaranje lokalne varijable, što prefiks ime varijable s V-A-R, var. 58 00:03:14,120 --> 00:03:17,010 >> Sada u JavaScriptu, funkcije neće ograničiti opseg varijabli. 59 00:03:17,010 --> 00:03:20,600 Dakle, ako imate lokalnu varijablu unutar Function, tada druge funkcije 60 00:03:20,600 --> 00:03:22,060 Ne mogu mu pristupiti. 61 00:03:22,060 --> 00:03:26,090 No, za razliku od C, petlje i uvjeta ne ograničiti opseg varijable. 62 00:03:26,090 --> 00:03:30,600 >> Dakle, čak i ako ga proglasiti unutar uvjet, cijela funkcija će 63 00:03:30,600 --> 00:03:32,810 imati pristup do njega. 64 00:03:32,810 --> 00:03:35,820 Sada bez var, promjenjiva će biti globalna. 65 00:03:35,820 --> 00:03:39,170 Dakle, ako ste upravo proglasiti ime i dodijeliti vrijednost, onda je varijabla 66 00:03:39,170 --> 00:03:41,900 će se globalna varijabla u JavaScript. 67 00:03:41,900 --> 00:03:48,480 >> Sada u kućama, imamo asocijativni Niz Tip kuće objekata, gdje 68 00:03:48,480 --> 00:03:52,100 svaka kuća je samo zemljopisna širina i dužine. 69 00:03:52,100 --> 00:03:55,140 Onda imamo putnika polje, što je niz 70 00:03:55,140 --> 00:03:57,370 tipa objekta putnika. 71 00:03:57,370 --> 00:04:01,620 Dakle, svaki putnik ima ime, ime, i kuća. 72 00:04:01,620 --> 00:04:04,840 Uočite da vidim tipa putnika, koji je zapravo samo znači 73 00:04:04,840 --> 00:04:08,150 da svaki objekt ima Isti ključ vrijednost par. 74 00:04:08,150 --> 00:04:12,830 Dakle, svaki objekt tipa putnika ima korisničko ime, ime i prezime, i kuća. 75 00:04:12,830 --> 00:04:14,850 >> Dakle, ono što trebamo učiniti za P setu? 76 00:04:14,850 --> 00:04:20,779 Pa, moramo omogućiti korisnicima da odaberete do članova osoblja, kako bi prikazali sve 77 00:04:20,779 --> 00:04:25,090 članovi osoblja koji su trenutno u naš prijevoz, a da ih spadati. 78 00:04:25,090 --> 00:04:29,280 A onda ćemo također razgovarati o extra značajke koje se mogu provesti za 79 00:04:29,280 --> 00:04:30,980 shuttle P set. 80 00:04:30,980 --> 00:04:33,610 >> No, pričajmo o kurva prva. 81 00:04:33,610 --> 00:04:37,480 Lica CS50 osoblja su posađeno cijelom kampusu, gdje je svaka 82 00:04:37,480 --> 00:04:41,750 Lice je implementiran kao oznake mjesta na 3D zemlji, i kao 83 00:04:41,750 --> 00:04:44,030 marker na karti 2D. 84 00:04:44,030 --> 00:04:47,880 Dakle, kada korisnik klikne na pick-up gumb, želimo staviti u blizini 85 00:04:47,880 --> 00:04:49,590 Putnici na besplatan prijevoz. 86 00:04:49,590 --> 00:04:53,650 I mi također želimo ukloniti svoje mjesto Marka iz svijeta, i skinuti 87 00:04:53,650 --> 00:04:58,060 marker s karte, što znači da oni su u našoj besplatan prijevoz sada. 88 00:04:58,060 --> 00:05:02,520 >> Pa kako ćemo otkriti da li putnici u dometu naše luke? 89 00:05:02,520 --> 00:05:04,610 Pa, funkcija udaljenost - 90 00:05:04,610 --> 00:05:08,770 pa shuttle dot udaljenost, prolazi u širinu i dužinu, neće 91 00:05:08,770 --> 00:05:12,030 izračunati udaljenost od struje Položaj shuttle 92 00:05:12,030 --> 00:05:15,850 ukazuju da navedete s tim dati širinu i dužinu. 93 00:05:15,850 --> 00:05:19,180 Na taj način možete koristiti ovaj izračunati udaljenost od luke do 94 00:05:19,180 --> 00:05:20,310 putnici. 95 00:05:20,310 --> 00:05:24,040 >> Ali kako znaš gdje su putnici? 96 00:05:24,040 --> 00:05:27,510 Pa, to je mjesto gdje ćemo morati urediti funkciju popuniti. 97 00:05:27,510 --> 00:05:32,500 Popuniti mjesta sve od članova osoblja i putnici u svijetu, 98 00:05:32,500 --> 00:05:36,300 i na kartu, ali ne pohraniti svoje mjesto. 99 00:05:36,300 --> 00:05:39,850 Pa možda možete pohraniti svoje stavljati oznake i markere 100 00:05:39,850 --> 00:05:41,570 u nekom globalnom polju. 101 00:05:41,570 --> 00:05:45,780 >> Sada postoji već je globalni niz pohranu podataka od putnika. 102 00:05:45,780 --> 00:05:49,960 Putnici Polje trgovinama svaka Naziv putnika i njihova kuća. 103 00:05:49,960 --> 00:05:54,985 Dakle, možda možete dodati nekoliko parametara ima na putničkim objekata. 104 00:05:54,985 --> 00:05:59,290 >> Da bi nam pomogli otkriti sve putnike dometu naše luke, neka je 105 00:05:59,290 --> 00:06:02,500 petlja kroz sve putnike u nizu putnika. 106 00:06:02,500 --> 00:06:07,790 Za petlju u JavaScriptu može izgledati ovako nešto, vrlo sličan 107 00:06:07,790 --> 00:06:12,910 one za petlje u C ili možemo koristiti alternativa za strukturu petlje. 108 00:06:12,910 --> 00:06:17,130 >> Za var sam se u polje, gdje sam će i dalje biti u indeks. 109 00:06:17,130 --> 00:06:20,740 No, ne morate navesti duljina polja točaka 110 00:06:20,740 --> 00:06:23,310 stanje, i ja plus plus. 111 00:06:23,310 --> 00:06:26,140 Položaj svakog putnika je dao je svoje mjesto oznake. 112 00:06:26,140 --> 00:06:29,800 >> Ali mark mjesto nije zemljopisna širina i dužina. 113 00:06:29,800 --> 00:06:34,575 Moramo pristupiti one parametre uzimajući geometriju, pomoću get 114 00:06:34,575 --> 00:06:35,900 geometriju na oznaci mjesta. 115 00:06:35,900 --> 00:06:39,630 I onda kada imamo geometriju, uzimajući ni geografsku širinu ili 116 00:06:39,630 --> 00:06:42,600 dužine, pomoću tih funkcija. 117 00:06:42,600 --> 00:06:45,680 >> Tako sada znamo kako otkriti da li Putnici su unutar 118 00:06:45,680 --> 00:06:47,920 Raspon naše luke. 119 00:06:47,920 --> 00:06:52,050 Kad budemo imali su putnici, mi ćemo želite dodati bilo putnika koji su 120 00:06:52,050 --> 00:06:53,140 unutar tog raspona. 121 00:06:53,140 --> 00:06:57,580 Želimo im omogućiti da hop na i sjednite na naše luke, ali samo 122 00:06:57,580 --> 00:06:59,640 ako imamo dovoljno prostora za njih. 123 00:06:59,640 --> 00:07:04,120 >> Shuttle dot sjedala polje će pokazuju li sjedala su prazna, ili 124 00:07:04,120 --> 00:07:05,890 koji je u to mjesto. 125 00:07:05,890 --> 00:07:11,170 Dakle, ako je sjedište je prazna, a zatim da sjedište će biti null. 126 00:07:11,170 --> 00:07:15,930 Tako ponoviti preko sjedala niz, provjere praznih sjedala, skladištenje 127 00:07:15,930 --> 00:07:20,020 Putnici u tim sjedalima dok ne Nemam ja više praznih mjesta. 128 00:07:20,020 --> 00:07:23,330 I na žalost, bilo drugih putnika će morati čekati 129 00:07:23,330 --> 00:07:26,000 Sljedeći put shuttle dolazi oko. 130 00:07:26,000 --> 00:07:30,280 >> Nakon što su dobili na besplatan prijevoz, mi ćemo željeti ukloniti svoje mjesto trag, koji 131 00:07:30,280 --> 00:07:32,540 je njihova slika u 3D svijetu. 132 00:07:32,540 --> 00:07:38,030 Ako sam htjela ukloniti mjesto mark p, onda bih dobiti sve značajke 133 00:07:38,030 --> 00:07:42,790 iz moje zemlje, iz Google Earth, a zatim izvadite da određeno mjesto 134 00:07:42,790 --> 00:07:45,910 označiti koristeći funkciju removeChild. 135 00:07:45,910 --> 00:07:51,360 Onda na kraju, neka je ukloniti oznake, ikona na karti 2D za bilo 136 00:07:51,360 --> 00:07:53,650 Putnik koji smo branje gore. 137 00:07:53,650 --> 00:07:59,790 Za uklanjanje marker, m, onda ću samo izvršiti m dot setMap null. 138 00:07:59,790 --> 00:08:02,920 Učinite to za bilo putnika unutar raspona, a vi ste završili kurva. 139 00:08:02,920 --> 00:08:05,056