1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA Chan: Nos, itt vagyunk, az utolsó meghatározott p-CS50. 3 00:00:13,360 --> 00:00:17,040 Gratulálok magatokat attól, hogy olyan messzire, mivel az első Üdvözöllek 4 00:00:17,040 --> 00:00:20,090 Worlds és nyomtatáshoz Piramisok a Mario. 5 00:00:20,090 --> 00:00:21,930 Ön tett egy website a múlt héten. 6 00:00:21,930 --> 00:00:25,110 És mi lesz, hogy egy másik ezen a héten, amelyik lehetővé teszi, hogy 7 00:00:25,110 --> 00:00:28,570 körbevezet a Harvard egyetemen, szedés fel CS50 személyzet tagjai és 8 00:00:28,570 --> 00:00:31,910 hozza őket vissza a lakóházak. 9 00:00:31,910 --> 00:00:35,400 >> Nos, a múlt héten dolgoztunk PHP, egy szerver oldali nyelv. 10 00:00:35,400 --> 00:00:38,250 Ehhez a p-set, mi vagyunk egyre bevezetésre JavaScript, ami egy 11 00:00:38,250 --> 00:00:40,610 kliens oldali nyelv. 12 00:00:40,610 --> 00:00:44,020 Szóval vessünk egy pillantást néhány a elosztás kód, ami nyújtott 13 00:00:44,020 --> 00:00:46,210 neked ezt p-set. 14 00:00:46,210 --> 00:00:49,700 A JavaScript mappában, nem lesz egy csomó JavaScript fájlokat. 15 00:00:49,700 --> 00:00:53,600 >> Van buildings.js, amely egy tömb épületek körül Harvard 16 00:00:53,600 --> 00:00:57,340 egyetemen az információ és helyzetét. 17 00:00:57,340 --> 00:01:01,630 Houses.js egy tömb a Harvard lakóházak azok 18 00:01:01,630 --> 00:01:04,030 szélességi és hosszúsági fokok. 19 00:01:04,030 --> 00:01:08,600 Passengers.js tartalmaz egy sor utasok, a CS50 munkatársak 20 00:01:08,600 --> 00:01:11,640 hogy akkor hozza vissza a lakóházak. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, hogy tartalmaz egy csomó funkciók köze a mozgalom. 22 00:01:16,450 --> 00:01:19,500 Ha matematikailag gondolkodású, akkor Üdvözlöm, hogy vessen egy pillantást. 23 00:01:19,500 --> 00:01:23,530 De nem kell, hogy megértsük Minden ott van. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, hogy foglalkozik a A Shuttle mozgását. 25 00:01:26,710 --> 00:01:31,450 És index.html a honlapon, ahol a minden úgy történik, tényleg, ahol a 26 00:01:31,450 --> 00:01:33,610 felhasználó kölcsönhatásban áll az oldalon. 27 00:01:33,610 --> 00:01:39,110 >> Service.css a CSS stíluslap, amely amellett, hogy a Twitter 28 00:01:39,110 --> 00:01:43,960 Bootstrap könyvtár, az ellenőrzések hogyan index.html néz. 29 00:01:43,960 --> 00:01:48,190 És akkor mi is service.js, amely tartalmaz szolgáltatási funkciók az 30 00:01:48,190 --> 00:01:49,010 a Shuttle. 31 00:01:49,010 --> 00:01:53,010 És itt van, hogy hová mész, hogy kitöltésével néhány to-do. 32 00:01:53,010 --> 00:01:56,600 >> Most vessünk egy pillantást a tárgyak és asszociatív tömbök JavaScript, 33 00:01:56,600 --> 00:01:59,360 amely minden cél és szándék, cserélhető. 34 00:01:59,360 --> 00:02:03,030 Ha akartam, hogy egy objektum egy változó úgynevezett pálcát, azt 35 00:02:03,030 --> 00:02:04,290 nyilvánítja. 36 00:02:04,290 --> 00:02:09,350 És benne azok a kapcsos zárójelek, megtenném adja meg, a mag egyszarvú, a fa 37 00:02:09,350 --> 00:02:12,710 cseresznye van, és a hossza 13. 38 00:02:12,710 --> 00:02:16,370 >> Most is elérheti értékeket A használati tárgyakat 39 00:02:16,370 --> 00:02:18,270 asszociatív tömb jelöléssel. 40 00:02:18,270 --> 00:02:22,610 Tehát pálcát index mag, tudok beállítani hogy az egyenlő az egyszarvú, vagy 41 00:02:22,610 --> 00:02:24,710 Ellenőrizze, hogy ha szükségem van. 42 00:02:24,710 --> 00:02:28,890 Vagy használhatja a pont operátor wand.wood egyenlő cseresznye, és 43 00:02:28,890 --> 00:02:30,280 így tovább és így tovább. 44 00:02:30,280 --> 00:02:33,930 Tehát láthatjuk, hogy asszociatív tömbök és objektumok JavaScript lesz 45 00:02:33,930 --> 00:02:37,710 cserélhető, és az akarat jön a nagyon praktikus. 46 00:02:37,710 --> 00:02:41,570 >> Ekkor megjelenik egy sor épület A buildings.js, 47 00:02:41,570 --> 00:02:43,870 ismét egy sor tárgyakat. 48 00:02:43,870 --> 00:02:48,500 Ha akartam, hogy egy sor, a legjobb épületek Harvard egyetemen, majd 49 00:02:48,500 --> 00:02:49,710 Azt, hogy ez a következő. 50 00:02:49,710 --> 00:02:55,250 Ezzel a tárgy jelöléssel, ahol a Tárolni a gyökér, név, cím, 51 00:02:55,250 --> 00:03:00,260 szélességi és hosszúsági minden egyetlen épületben objektumot. 52 00:03:00,260 --> 00:03:02,930 >> Menjünk gyorsan beszéljünk változókkal JavaScript. 53 00:03:02,930 --> 00:03:07,760 Mint a PHP, JavaScript változókat gyengén vagy gyengén típusos. 54 00:03:07,760 --> 00:03:14,120 Hozzon létre egy helyi változót, akkor prefix A változó neve V-A-R, var. 55 00:03:14,120 --> 00:03:17,010 Most, JavaScript, funkciók körét a változók. 56 00:03:17,010 --> 00:03:20,600 Tehát ha van egy helyi változót belül funkciót, akkor más funkciók 57 00:03:20,600 --> 00:03:22,060 nem tud hozzáférni. 58 00:03:22,060 --> 00:03:26,090 >> De ellentétben a C, hurkok és a feltételek nem korlátozhatja a változó. 59 00:03:26,090 --> 00:03:30,600 Tehát akkor is, ha kijelenti, hogy belsejében egy állapotban, az egész funkció 60 00:03:30,600 --> 00:03:32,810 férhetnek hozzá. 61 00:03:32,810 --> 00:03:35,820 Nos, anélkül, var, változó lesz a globális. 62 00:03:35,820 --> 00:03:39,170 Tehát, ha csak állapítsa meg a nevét és hozzá egy értéket, akkor a változó 63 00:03:39,170 --> 00:03:41,900 lesz egy globális változót JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Most, házak, van egy asszociatív tömb host típusú objektum, ahol a 65 00:03:48,480 --> 00:03:52,100 minden ház csak egy szélességi és hosszúsági. 66 00:03:52,100 --> 00:03:55,140 Aztán ott van az utasok tömb, amely egy tömb 67 00:03:55,140 --> 00:03:57,370 objektum típusú személygépkocsik. 68 00:03:57,370 --> 00:04:01,620 Szóval minden utas egy felhasználó név, egy nevet, és egy házat. 69 00:04:01,620 --> 00:04:04,840 >> Figyeljük meg, hogy azt mondom típus utas, ami valójában csak azt jelenti, 70 00:04:04,840 --> 00:04:08,150 hogy minden objektum a ugyanaz a kulcs érték párok. 71 00:04:08,150 --> 00:04:12,830 Szóval minden típusú objektum utas a felhasználói nevet, egy nevet, és egy házat. 72 00:04:12,830 --> 00:04:14,850 Szóval mit is kell tenni a p-set? 73 00:04:14,850 --> 00:04:20,779 Nos, meg kell, hogy a felhasználók, hogy vegye fel a személyzet tagjai, a bemutatás minden 74 00:04:20,779 --> 00:04:25,080 a személyzet tagjai, amelyek jelenleg a a transzfer, és vidd őket. 75 00:04:25,080 --> 00:04:29,395 És akkor mi is beszélünk extra funkciókat lehet végrehajtani 76 00:04:29,395 --> 00:04:30,980 A Shuttle p-set. 77 00:04:30,980 --> 00:04:33,610 >> De beszéljünk hangszedő először. 78 00:04:33,610 --> 00:04:37,480 Az arcok CS50 személyzet volt ültetett az egész campus, ahol minden egyes 79 00:04:37,480 --> 00:04:41,750 arc végre egy hely jel a 3D-s Földön, és mint 80 00:04:41,750 --> 00:04:44,020 marker a 2D térkép. 81 00:04:44,020 --> 00:04:47,880 Tehát, ha a felhasználó rákattint a Pickup gombot szeretnénk hozzáadni szomszédos 82 00:04:47,880 --> 00:04:49,590 az utasokat, hogy a transzfer. 83 00:04:49,590 --> 00:04:53,650 És mi is szeretnénk, hogy távolítsa el a helyüket jelölje meg a világ, és távolítsa el a 84 00:04:53,650 --> 00:04:58,060 marker a térképről, jelezve, hogy ők a mi transzfer most. 85 00:04:58,060 --> 00:05:02,520 >> Szóval hogyan lehet felismerni, ha az utas hatósugarán belül tartózkodik, a transzfer? 86 00:05:02,520 --> 00:05:06,670 Nos, a függvény távolság, így shuttle.distance, átadva a 87 00:05:06,670 --> 00:05:10,630 szélességi és hosszúsági, kiszámolja a távolság az aktuális pozíció 88 00:05:10,630 --> 00:05:14,220 A transzfer a lényeg, hogy megadja az, hogy adott 89 00:05:14,220 --> 00:05:15,860 szélességi és hosszúsági fok. 90 00:05:15,860 --> 00:05:19,180 Így ezt a kiszámításához távolság a transzfer a 91 00:05:19,180 --> 00:05:20,310 utasokat. 92 00:05:20,310 --> 00:05:24,040 >> De honnan tudod, hogy hol az utasok? 93 00:05:24,040 --> 00:05:27,510 Nos, ez az, ahol meg kell szerkesztéséhez populate funkciót. 94 00:05:27,510 --> 00:05:32,500 Töltse ki helyen az összes munkatársak az utasok a világ 95 00:05:32,500 --> 00:05:36,300 és a térképet, de nem tárolja a helyét. 96 00:05:36,300 --> 00:05:39,850 Így talán lehet tárolni a helyezzük jelek és jelölők 97 00:05:39,850 --> 00:05:41,570 Egyes globális tömbben. 98 00:05:41,570 --> 00:05:45,780 >> Most már van egy globális tömb tárolja az adatokat az utasok. 99 00:05:45,780 --> 00:05:49,960 Az utasok tömb tárolja minden utas nevét és házuk. 100 00:05:49,960 --> 00:05:54,985 Így talán akkor adjunk hozzá néhány paramétert ott az utas tárgyakat. 101 00:05:54,985 --> 00:05:58,150 >> Hogy segítsen felismerni az összes utas hatókörén belül a mi 102 00:05:58,150 --> 00:06:02,485 shuttle, mondjuk hurok végig a utasok az utasok tömbben. 103 00:06:02,485 --> 00:06:07,790 A for ciklus a JavaScript nézhet valami ehhez hasonló, nagyon hasonlít a 104 00:06:07,790 --> 00:06:13,200 azok a hurkok C. Vagy használhatsz alternatívát hurok szerkezet, a 105 00:06:13,200 --> 00:06:18,680 var i tömbben, ahol én továbbra is az index, de nem kell, hogy 106 00:06:18,680 --> 00:06:23,310 adja meg a array.length állapota és i + +. 107 00:06:23,310 --> 00:06:26,130 >> Minden utas elhelyezkedése által helyüket jelet. 108 00:06:26,130 --> 00:06:29,800 De a hely védjegy nem a szélességi és a hosszúsági. 109 00:06:29,800 --> 00:06:34,170 Van, hogy hozzáférést e paraméterek hogy a geometria, a GET 110 00:06:34,170 --> 00:06:38,180 geometria helyén jelet, majd Ha megvan a geometria, egyre 111 00:06:38,180 --> 00:06:42,580 vagy a szélességi és a hosszúsági használja ezeket a funkciókat. 112 00:06:42,580 --> 00:06:45,680 >> Tehát most már tudjuk, hogyan kell felismerni, hogy a utasok a 113 00:06:45,680 --> 00:06:47,920 palettáját transzfer. 114 00:06:47,920 --> 00:06:52,050 Ha már ezeket az utasokat, fogunk szeretne hozzáadni utasokat, amelyek 115 00:06:52,050 --> 00:06:53,140 e tartományon belül. 116 00:06:53,140 --> 00:06:57,580 Azt akarjuk, hogy lehetővé teszi számukra, hogy a komló, és hogy egy helyet a transzfer, de csak 117 00:06:57,580 --> 00:06:59,630 ha van elég hely a számukra. 118 00:06:59,630 --> 00:07:04,120 >> A shuttle.seats tömb jelzi hogy az ülések üresek, vagy 119 00:07:04,120 --> 00:07:05,890 aki ebben az ülésen. 120 00:07:05,890 --> 00:07:11,160 Tehát, ha az ülés üres, akkor hogy az ülés null lesz. 121 00:07:11,160 --> 00:07:15,930 Így végighaladni az ülések tömb, ellenőrzése üres hely, tároló 122 00:07:15,930 --> 00:07:20,020 utasok azokba helyet, amíg meg nem nincs több üres hely. 123 00:07:20,020 --> 00:07:23,330 És sajnos, minden más utas meg kell várni a 124 00:07:23,330 --> 00:07:26,000 legközelebb a komp jön le. 125 00:07:26,000 --> 00:07:30,280 >> Ha egyszer kap a transzfer, akkor szeretnénk hogy távolítsa el a helyüket jelet, amely 126 00:07:30,280 --> 00:07:32,580 az ő fotó a 3D-s világban. 127 00:07:32,580 --> 00:07:38,030 Ha akartam, hogy távolítsa el a helyre jelet p, akkor azt, hogy az összes funkciót 128 00:07:38,030 --> 00:07:42,820 az én a Föld, a Google Earth, és távolítsa el az adott helyen 129 00:07:42,820 --> 00:07:45,910 jelölje a removeChild funkciót. 130 00:07:45,910 --> 00:07:51,360 Majd végül, hadd vegye a marker, Az ikont a 2D-s térkép, bármilyen 131 00:07:51,360 --> 00:07:53,650 az utas, hogy felvette. 132 00:07:53,650 --> 00:07:59,790 >> Eltávolításához marker m, akkor én csak futtasd m.setMap null. 133 00:07:59,790 --> 00:08:03,670 Ehhez minden utas hatótávolságon belül, és akkor már elkészült felvétel. 134 00:08:03,670 --> 00:08:07,890 A táblázat funkciót megjeleníti az összes az utasok, amelyek a 135 00:08:07,890 --> 00:08:11,000 shuttle, és üres helyet, ha üres. 136 00:08:11,000 --> 00:08:14,420 Tehát ábra kell végighaladni shuttle.seats, megjeleníti a 137 00:08:14,420 --> 00:08:21,350 utastájékoztatási minden index, és üres hely, ha az index null. 138 00:08:21,350 --> 00:08:26,160 >> Most, ha HTML szöveg kerül belsejében egy JavaScript változó, akkor használatával 139 00:08:26,160 --> 00:08:31,950 document.getElementById, diagram szerkeszteni a belső HTML, hogy adott 140 00:08:31,950 --> 00:08:36,140 elemet hozzárendeljük a HTML szöveget 141 00:08:36,140 --> 00:08:40,840 document.getElementById belső HTML változó. 142 00:08:40,840 --> 00:08:46,180 Amikor a felhasználó rákattint a drop off gomb az index.html, akkor fog hívni a 143 00:08:46,180 --> 00:08:47,160 dropoff funkciót. 144 00:08:47,160 --> 00:08:49,510 És ez a mi feladatunk, hogy hajtsák végre ezt. 145 00:08:49,510 --> 00:08:54,150 >> A dropoff, azt akarja, hogy távolítsa el a utasok a komp, ha 146 00:08:54,150 --> 00:08:58,740 vagyunk tartományban helyükre, a lakóház. 147 00:08:58,740 --> 00:09:03,300 Így dropoff kell ellenőrizni, hogy A transzfer tartományban bármelyik 148 00:09:03,300 --> 00:09:08,200 házak, és távolítsa el a szükséges utasok a komp. 149 00:09:08,200 --> 00:09:11,020 Szóval hogyan lehet ellenőrizni, ha vagyunk tartományban bármilyen házak? 150 00:09:11,020 --> 00:09:16,630 Nos, ismét, akkor használja a shuttle.distance funkció átadva 151 00:09:16,630 --> 00:09:20,990 a szélességi és hosszúsági a pont hogy mi ellenőrizve. 152 00:09:20,990 --> 00:09:22,730 >> De mik azok a célok? 153 00:09:22,730 --> 00:09:27,210 Nos, a házak tömb, ha emlékszel A houses.js, tárolja a 154 00:09:27,210 --> 00:09:32,790 szélességi és hosszúsági minden ház Egy asszociatív tömb, ahol minden 155 00:09:32,790 --> 00:09:35,980 index a neve annak a háznak. 156 00:09:35,980 --> 00:09:37,590 Azután, hogy távolítsa el az utasokat - 157 00:09:37,590 --> 00:09:41,820 Nos, csak akkor, ha mi vagyunk a tartomány saját ház, hogy akarnak menni. 158 00:09:41,820 --> 00:09:46,380 Tehát még egyszer, ne feledje, hogy az utasok tárolja a ház, hogy minden utas 159 00:09:46,380 --> 00:09:48,850 akar menni. 160 00:09:48,850 --> 00:09:51,670 Ha ezek hatókörén belül a ház, aztán vegye ki, hogy 161 00:09:51,670 --> 00:09:57,200 utas shuttle.seats és állítsa helyüket a tömb null. 162 00:09:57,200 --> 00:10:00,220 >> Most beszéljünk néhány extra funkciók hogy lehet végrehajtani 163 00:10:00,220 --> 00:10:02,690 A CS50 Shuttle p-set. 164 00:10:02,690 --> 00:10:05,850 Van egy pont, rendszer, amelyben nyomon követheti, hogy hány 165 00:10:05,850 --> 00:10:07,520 rámutat a felhasználó. 166 00:10:07,520 --> 00:10:11,120 A lemorzsolódás utasokat sikeres, akkor kap pontot. 167 00:10:11,120 --> 00:10:15,100 De próbálja lehull utasok ahol nincs olyan ház a közelben 168 00:10:15,100 --> 00:10:16,980 Nos, akkor kap büntetést érte. 169 00:10:16,980 --> 00:10:21,790 Így talán szeretné nyomon követni A pontot egy globális változót. 170 00:10:21,790 --> 00:10:25,970 >> Akkor végre talán egy időzítő, ahol a A felhasználónak van egy bizonyos mennyiségű 171 00:10:25,970 --> 00:10:29,800 ideje, hogy vegye fel és dobja ki a Egyes utasok száma. 172 00:10:29,800 --> 00:10:33,280 Talán még integrálni ezt A pontrendszer. 173 00:10:33,280 --> 00:10:39,970 Vagy lehet szerkeszteni Chart úgy, hogy utasokat sorrendje házat. 174 00:10:39,970 --> 00:10:45,250 Szóval ez valószínűleg egyfajta funkció a shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Ön végre egy repülő funkciót, ahol, ha a felhasználó bemenetek a Konami 176 00:10:49,240 --> 00:10:53,460 kódot, majd az űrsikló felemeli le a föld és az űrsikló repülni. 177 00:10:53,460 --> 00:10:58,890 De egy biztos drop off, a legjobb, hogy az űrsikló földet a kerekek a 178 00:10:58,890 --> 00:11:00,700 őrölt először. 179 00:11:00,700 --> 00:11:05,910 Azt is végre teleportáció, ahol egy legördülő lista 180 00:11:05,910 --> 00:11:08,380 épületek index.html. 181 00:11:08,380 --> 00:11:12,270 És kiválasztja az egyik ilyen, a felhasználónak kell szállítani 182 00:11:12,270 --> 00:11:14,220 hogy az épület az egyetemen. 183 00:11:14,220 --> 00:11:16,760 OK, bár, utazni a a falak néhány 184 00:11:16,760 --> 00:11:19,290 épületek az utat oda. 185 00:11:19,290 --> 00:11:22,960 >> Azt is megváltoztathatja a sebességet a shuttle, lehetővé téve a felhasználó számára, hogy növelje 186 00:11:22,960 --> 00:11:25,490 vagy csökkentheti a sebességet. 187 00:11:25,490 --> 00:11:28,840 Talán szeretne egy globális változót nyomon követheti, hogy mennyi üzemanyagot a 188 00:11:28,840 --> 00:11:31,520 Shuttle, csökkenő úgy, ahogy megy végig. 189 00:11:31,520 --> 00:11:35,860 Miután hit nulla, bár az űrsikló nem lesz képes mozogni, ha már 190 00:11:35,860 --> 00:11:40,610 üzemanyagot, esetleg egy gombbal, vagy is, hogy a saját benzinkút. 191 00:11:40,610 --> 00:11:43,240 >> De ez biztosan nem kimerítő listát. 192 00:11:43,240 --> 00:11:46,340 Nézd meg a spec a teljes lista, vagy esetleg javaslatot 193 00:11:46,340 --> 00:11:47,840 a saját a TF. 194 00:11:47,840 --> 00:11:48,950 Az ég a határ. 195 00:11:48,950 --> 00:11:53,110 Ez az utolsó CS50 p-set, így szórakozni vele. 196 00:11:53,110 --> 00:11:56,360 Ez CS50 Shuttle. 197 00:11:56,360 --> 00:11:59,230 >> Azt kell mondanom, ez egy öröm hogy ezeket az Ön számára a 198 00:11:59,230 --> 00:12:00,400 produkciós csapat. 199 00:12:00,400 --> 00:12:04,330 És remélem, hogy már élvezni őket is. 200 00:12:04,330 --> 00:12:06,040 A nevem Zamyla. 201 00:12:06,040 --> 00:12:08,310 És ez volt CS50. 202 00:12:08,310 --> 00:12:16,363