1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA Chan: No, tässä me olemme, viimeinen p-asetettu CS50. 3 00:00:13,360 --> 00:00:17,040 Onnittelen itse saamasta edennyt niin pitkälle, koska ensimmäinen Hei 4 00:00:17,040 --> 00:00:20,090 Maailmoja ja tulostaminen Up Pyramidit Mario. 5 00:00:20,090 --> 00:00:21,930 Teit verkkosivuilla viime viikolla. 6 00:00:21,930 --> 00:00:25,110 Ja aiomme olla tehdä toinen tällä viikolla, yksi, jonka avulla voit 7 00:00:25,110 --> 00:00:28,570 ajaa ympäri Harvardin kampuksella, poiminta up CS50 toimihenkilöille ja 8 00:00:28,570 --> 00:00:31,910 tuo heidät takaisin asuinrakennusta. 9 00:00:31,910 --> 00:00:35,400 >> Nyt viime viikolla teimme PHP, palvelimen puolella kieltä. 10 00:00:35,400 --> 00:00:38,250 Tästä p-sarja, menemme käyttöön JavaScript, joka on 11 00:00:38,250 --> 00:00:40,610 asiakkaan puolella kieltä. 12 00:00:40,610 --> 00:00:44,020 Joten katsotaanpa katsomaan joitakin jakelu-koodi, joka annetaan 13 00:00:44,020 --> 00:00:46,210 teitä tästä p-set. 14 00:00:46,210 --> 00:00:49,700 JavaScript-kansiossa, siellä olla joukko JavaScript-tiedostot. 15 00:00:49,700 --> 00:00:53,600 >> On buildings.js, joka sisältää joukko rakennuksia ympäri Harvard 16 00:00:53,600 --> 00:00:57,340 kampuksella tietonsa ja sijainti. 17 00:00:57,340 --> 00:01:01,630 Houses.js on joukko Harvard asuinrakennusta kanssa 18 00:01:01,630 --> 00:01:04,030 leveys-ja pituusaste. 19 00:01:04,030 --> 00:01:08,600 Passengers.js sisältää erilaisia matkustajat, CS50 toimihenkilöille 20 00:01:08,600 --> 00:01:11,640 että sinulla on tuo takaisin niiden asuinrakennusta. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, joka sisältää paljon toimintoja tekemistä liikkeen. 22 00:01:16,450 --> 00:01:19,500 Jos olet matemaattisesti ajattelevia, niin Toivotan teidät tervetulleeksi katsomaan. 23 00:01:19,500 --> 00:01:23,530 Mutta sinun ei tarvitse ymmärtää Kaikki siellä. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, joka käsittelee Shuttlen liikettä. 25 00:01:26,710 --> 00:01:31,450 Ja index.html on kotisivu, josta kaikki tapahtuu, todella, jos 26 00:01:31,450 --> 00:01:33,610 käyttäjä on vuorovaikutuksessa sivuston. 27 00:01:33,610 --> 00:01:39,110 >> Service.css on CSS tyylisivu, joka lisäksi Twitter 28 00:01:39,110 --> 00:01:43,960 Bootstrap Library, hallintalaitteet miten index.html näyttää. 29 00:01:43,960 --> 00:01:48,190 Ja sitten meillä on myös service.js, joka sisältää palvelun toiminnot 30 00:01:48,190 --> 00:01:49,010 Shuttle. 31 00:01:49,010 --> 00:01:53,010 Ja tässä on, jos aiot olla täyttämällä joitakin to-do: n. 32 00:01:53,010 --> 00:01:56,600 >> Nyt katsomaan esineitä ja assosiatiiviset taulukot JavaScript, 33 00:01:56,600 --> 00:01:59,360 jotka kaikki aikomukset ja tarkoituksiin, ovat vaihdettavissa. 34 00:01:59,360 --> 00:02:03,030 Jos haluaisin tehdä objektin muuttujan kutsutaan sauva, olisin 35 00:02:03,030 --> 00:02:04,290 julistaa sen. 36 00:02:04,290 --> 00:02:09,350 Ja sisältä nuo aaltosulkeita, olisin täsmentää, ydin on yksisarvinen, puu 37 00:02:09,350 --> 00:02:12,710 on kirsikka, ja pituus on 13. 38 00:02:12,710 --> 00:02:16,370 >> Nyt voin myös käyttää arvoja esineiden avulla 39 00:02:16,370 --> 00:02:18,270 assosiatiivisia array merkintätapa. 40 00:02:18,270 --> 00:02:22,610 Joten sauva indeksi ydin, voin asettaa että sama yksisarvinen, tai 41 00:02:22,610 --> 00:02:24,710 tarkista, että jos tarvitsen. 42 00:02:24,710 --> 00:02:28,890 Tai voin käyttää piste operaattori wand.wood vastaa kirsikka, ja 43 00:02:28,890 --> 00:02:30,280 niin edelleen ja niin edelleen. 44 00:02:30,280 --> 00:02:33,930 Niin näet, että assosiatiivisia taulukoita ja esineet JavaScript aiotaan 45 00:02:33,930 --> 00:02:37,710 vaihdettavissa, ja tahdon tulevat varsin kätevä. 46 00:02:37,710 --> 00:02:41,570 >> Sitten näemme erilaisia ​​rakennuksia vuonna buildings.js, 47 00:02:41,570 --> 00:02:43,870 jälleen, erilaisia ​​esineitä. 48 00:02:43,870 --> 00:02:48,500 Jos haluaisin tehdä joukko paras rakennukset Harvardin kampuksella sitten 49 00:02:48,500 --> 00:02:49,710 Haluaisin tehdä sen seuraavasti. 50 00:02:49,710 --> 00:02:55,250 Käyttämällä tätä objektin muodossa, jossa Olen tallentaa juuri, nimi, osoite, 51 00:02:55,250 --> 00:03:00,260 leveyttä ja pituuspiirin jokaiselle yksi rakennus objektin. 52 00:03:00,260 --> 00:03:02,930 >> Katsotaanpa nopeasti puhua muuttujista JavaScript. 53 00:03:02,930 --> 00:03:07,760 Kuten PHP, JavaScript muuttujat ovat heikosti tai väljästi kirjoitettu. 54 00:03:07,760 --> 00:03:14,120 Voit luoda paikallinen muuttuja, voit etuliite muuttujan nimen V--R, var. 55 00:03:14,120 --> 00:03:17,010 Nyt, JavaScript, toiminnot rajoittaa muuttujia. 56 00:03:17,010 --> 00:03:20,600 Joten jos sinulla on paikallinen muuttuja sisällä toiminto, sitten muut toiminnot 57 00:03:20,600 --> 00:03:22,060 voi käyttää sitä. 58 00:03:22,060 --> 00:03:26,090 >> Mutta toisin kuin C, silmukoita ja olosuhteet eivät rajata muuttuja. 59 00:03:26,090 --> 00:03:30,600 Joten vaikka et julistaa sen sisällä kunnossa, koko toiminto 60 00:03:30,600 --> 00:03:32,810 on pääsy siihen. 61 00:03:32,810 --> 00:03:35,820 Nyt ilman var, muuttuja on maailmanlaajuinen. 62 00:03:35,820 --> 00:03:39,170 Joten jos vain julistaa nimi ja määrittää arvon, että muuttuja 63 00:03:39,170 --> 00:03:41,900 on globaali muuttuja JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Nyt taloissa, meillä on assosiatiivinen joukko isäntä tyypin esineitä, joissa 65 00:03:48,480 --> 00:03:52,100 jokainen talo on vain leveyttä ja pituutta. 66 00:03:52,100 --> 00:03:55,140 Sitten meillä on matkustajia array, joka on array 67 00:03:55,140 --> 00:03:57,370 objektin tyypin matkustaja. 68 00:03:57,370 --> 00:04:01,620 Joten jokainen matkustaja on käyttäjän nimi, nimi, ja talon. 69 00:04:01,620 --> 00:04:04,840 >> Huomaa, että sanon tyypin matkustaja, joka todella tarkoittaa vain sitä 70 00:04:04,840 --> 00:04:08,150 että jokainen esine on samalla avaimella arvo-pareja. 71 00:04:08,150 --> 00:04:12,830 Joten jokainen esine tyypin matkustajalla on käyttäjätunnus, nimi, ja talon. 72 00:04:12,830 --> 00:04:14,850 Joten mitä meidän on tehdä p-sarja? 73 00:04:14,850 --> 00:04:20,779 No, meidän täytyy avulla käyttäjät voivat valita up toimihenkilöiden näkyviin kaikki 74 00:04:20,779 --> 00:04:25,080 henkilökunnan jäsenet, jotka ovat tällä hetkellä meidän bussikuljetus ja pudottaa ne pois. 75 00:04:25,080 --> 00:04:29,395 Ja sitten me myös puhua ylimääräistä ominaisuuksia, jotka voidaan toteuttaa 76 00:04:29,395 --> 00:04:30,980 Shuttle p-set. 77 00:04:30,980 --> 00:04:33,610 >> Mutta puhutaanpa pickup ensin. 78 00:04:33,610 --> 00:04:37,480 Kasvot CS50 työntekijät ovat olleet istutettu ympäri kampusta, jossa kukin 79 00:04:37,480 --> 00:04:41,750 kasvot on toteutettu paikka merkki 3D-maapallolla, ja sillä 80 00:04:41,750 --> 00:04:44,020 merkitsin 2D-kartan. 81 00:04:44,020 --> 00:04:47,880 Joten kun käyttäjä napsauttaa Pickup painiketta, haluamme lisätä lähistöllä 82 00:04:47,880 --> 00:04:49,590 matkustajia shuttle. 83 00:04:49,590 --> 00:04:53,650 Ja haluamme myös poistaa niiden paikka Merkitse maailmasta ja poistaa niiden 84 00:04:53,650 --> 00:04:58,060 merkkiaine kartan, joka osoittaa, että he ovat meidän shuttle nyt. 85 00:04:58,060 --> 00:05:02,520 >> Miten siis havaita, jos matkustajia kuuluvuusalueella meidän sukkula? 86 00:05:02,520 --> 00:05:06,670 No, etäisyyden funktiona, joten shuttle.distance, ohimennen 87 00:05:06,670 --> 00:05:10,630 leveyttä ja pituutta, laskee etäisyys nykyisestä sijainnista 88 00:05:10,630 --> 00:05:14,220 sukkulan siihen pisteeseen, että voit määrittää sen kanssa annetaan 89 00:05:14,220 --> 00:05:15,860 leveyttä ja pituutta. 90 00:05:15,860 --> 00:05:19,180 Voit siis käyttää tätä laskea etäisyys kuljetus 91 00:05:19,180 --> 00:05:20,310 matkustajia. 92 00:05:20,310 --> 00:05:24,040 >> Mutta mistä tiedät, missä matkustajat ovat? 93 00:05:24,040 --> 00:05:27,510 No, siitähän meidän täytyy muokata populate toiminto. 94 00:05:27,510 --> 00:05:32,500 Kansoittavat paikkoja kaikki henkilökunnan jäsenet Matkustajamäärien maailmaan 95 00:05:32,500 --> 00:05:36,300 ja osaksi karttaa, mutta ei tallentaa niiden sijainti. 96 00:05:36,300 --> 00:05:39,850 Joten ehkä voit tallentaa niiden aseta merkit ja tussit 97 00:05:39,850 --> 00:05:41,570 Joissakin globaali array. 98 00:05:41,570 --> 00:05:45,780 >> Nyt on jo olemassa maailmanlaajuinen array tallentamiseen tietoja matkustajista. 99 00:05:45,780 --> 00:05:49,960 Matkustajien array tallentaa kunkin matkustajan nimi ja heidän talonsa. 100 00:05:49,960 --> 00:05:54,985 Joten ehkä voit lisätä muutama parametri siellä matkustaja esineitä. 101 00:05:54,985 --> 00:05:58,150 >> Auttaa meitä havaitsemaan kaikkia matkustajia kuuluvuusalueella meidän 102 00:05:58,150 --> 00:06:02,485 shuttle, nyt silmukan läpi kaikki matkustajille matkustajien jono. 103 00:06:02,485 --> 00:06:07,790 Silmukan JavaScript voisi näyttää jotain tällaista, hyvin samankaltainen 104 00:06:07,790 --> 00:06:13,200 nämä silmukkahakujasi C. Tai voimme käyttää vaihtoehto silmukkarakenteen varten 105 00:06:13,200 --> 00:06:18,680 var i array, jossa i on silti indeksin, mutta sinun ei tarvitse 106 00:06:18,680 --> 00:06:23,310 Määritä array.length kunnossa ja i + +. 107 00:06:23,310 --> 00:06:26,130 >> Jokaisella matkustajalla sijainti on antama paikkansa merkki. 108 00:06:26,130 --> 00:06:29,800 Mutta paikka tavaramerkki ei ole leveyttä ja pituutta. 109 00:06:29,800 --> 00:06:34,170 Meidän täytyy käyttää näitä parametreja saada geometria, GET 110 00:06:34,170 --> 00:06:38,180 geometrian paikka merkki, ja sitten kun meillä on geometria, saada 111 00:06:38,180 --> 00:06:42,580 joko leveyttä tai pituusaste käyttää näitä toimintoja. 112 00:06:42,580 --> 00:06:45,680 >> Joten nyt me tiedämme, miten tunnistaa, onko matkustajat ovat 113 00:06:45,680 --> 00:06:47,920 Valikoima shuttle. 114 00:06:47,920 --> 00:06:52,050 Kun meillä on niitä matkustajia, näytämme haluat lisätä matkustajia, jotka ovat 115 00:06:52,050 --> 00:06:53,140 tällä alueella. 116 00:06:53,140 --> 00:06:57,580 Haluamme antaa heille mahdollisuuden hypätä ja ottaa istuin meidän shuttle, mutta vain 117 00:06:57,580 --> 00:06:59,630 jos meillä on tarpeeksi tilaa heille. 118 00:06:59,630 --> 00:07:04,120 >> Shuttle.seats array osoittaa onko istuimet ovat tyhjiä, tai 119 00:07:04,120 --> 00:07:05,890 kuka kyseiselle istuimelle. 120 00:07:05,890 --> 00:07:11,160 Joten jos istuin on tyhjä, että istuin on nolla. 121 00:07:11,160 --> 00:07:15,930 Joten kerrata yli paikkaa array, tarkistamalla tyhjiä paikkoja, tallentamiseen 122 00:07:15,930 --> 00:07:20,020 matkustajia istuimet kunnes ei ole enää tyhjiä paikkoja. 123 00:07:20,020 --> 00:07:23,330 Ja valitettavasti muita matkustajia on odotettava 124 00:07:23,330 --> 00:07:26,000 Seuraavan kerran sukkulan tulee alas. 125 00:07:26,000 --> 00:07:30,280 >> Kun he saavat sukkula, me haluamme riisumaan paikkaan merkki, joka 126 00:07:30,280 --> 00:07:32,580 on heidän kuvansa 3D-maailmassa. 127 00:07:32,580 --> 00:07:38,030 Jos haluaisin poistaa paikkaan merkin p, niin saisin kaikki ominaisuudet 128 00:07:38,030 --> 00:07:42,820 minun Earth Google Earth ja irrota kyseisen paikan 129 00:07:42,820 --> 00:07:45,910 merkitä käyttämällä removeChild toimintoa. 130 00:07:45,910 --> 00:07:51,360 Sitten lopuksi, älkäämme poistaa merkinnän, kuvaketta 2D-kartan, mistään 131 00:07:51,360 --> 00:07:53,650 henkilöauto että olemme poimien. 132 00:07:53,650 --> 00:07:59,790 >> Voit poistaa merkki m, sitten minä tietenkään suorita m.setMap null. 133 00:07:59,790 --> 00:08:03,670 Tee tämä matkustajia ulottuvilla, ja olet valmis pickup. 134 00:08:03,670 --> 00:08:07,890 Kaavio toiminto pitäisi näyttää kaikki matkustajista, jotka ovat teidän 135 00:08:07,890 --> 00:08:11,000 bussikuljetus ja tyhjä paikka, jos tyhjiä. 136 00:08:11,000 --> 00:08:14,420 Joten kaavion pitäisi kerrata yli shuttle.seats, näytetään 137 00:08:14,420 --> 00:08:21,350 matkustajatietojen jokaiselle indeksi, ja tyhjä paikka, jos indeksi on nolla. 138 00:08:21,350 --> 00:08:26,160 >> Nyt jos HTML teksti on laittaa sisälle JavaScript muuttuja, sitten käyttämällä 139 00:08:26,160 --> 00:08:31,950 document.getElementById, Kaavio voi muokata sisäinen HTML siitä, mitä saadaan 140 00:08:31,950 --> 00:08:36,140 elementti nimeämällä HTML tekstin 141 00:08:36,140 --> 00:08:40,840 document.getElementById sisempi HTML muuttuja. 142 00:08:40,840 --> 00:08:46,180 Kun käyttäjät napsauttavat Drop Off-painiketta vuonna index.html, se soitan 143 00:08:46,180 --> 00:08:47,160 dropoff toiminto. 144 00:08:47,160 --> 00:08:49,510 Ja se on meidän tehtävämme toteuttaa sitä. 145 00:08:49,510 --> 00:08:54,150 >> Vuonna dropoff, me haluamme poistaa matkustajia shuttle vain, jos 146 00:08:54,150 --> 00:08:58,740 olemme erilaisia ​​määränpäähänsä, niiden asuintalo. 147 00:08:58,740 --> 00:09:03,300 Joten dropoff täytyy tarkistaa, onko sukkula on välillä tahansa 148 00:09:03,300 --> 00:09:08,200 taloja, ja poista kaikki tarvittavat matkustajia shuttle. 149 00:09:08,200 --> 00:09:11,020 Miten siis tarkistaa, jos olemme kantaman tahansa taloja? 150 00:09:11,020 --> 00:09:16,630 No, jälleen kerran, me hyödyntää shuttle.distance toiminto, ohimennen 151 00:09:16,630 --> 00:09:20,990 pituus-ja leveyspiiri pisteen että me tarkastamme vastaan. 152 00:09:20,990 --> 00:09:22,730 >> Mutta mitä ovat ne kohdat? 153 00:09:22,730 --> 00:09:27,210 No, talot array, jos muistat vuonna houses.js, tallentaa 154 00:09:27,210 --> 00:09:32,790 pituus-ja leveysasteiden kunkin talon assosiatiivisia array, jossa jokainen 155 00:09:32,790 --> 00:09:35,980 indeksi on nimi, että talon. 156 00:09:35,980 --> 00:09:37,590 Sitten poistaa matkustajia - 157 00:09:37,590 --> 00:09:41,820 hyvin, vain jos olemme kantaman heidän talo, että he haluavat mennä. 158 00:09:41,820 --> 00:09:46,380 Joten jälleen, muista, että matkustajat tallentaa talo, että jokainen matkustaja 159 00:09:46,380 --> 00:09:48,850 haluaa mennä. 160 00:09:48,850 --> 00:09:51,670 Jos ne ovat erilaisia ​​niiden talo, niin poistamme että 161 00:09:51,670 --> 00:09:57,200 matkustajan shuttle.seats ja asettaa asemansa array nollaksi. 162 00:09:57,200 --> 00:10:00,220 >> Nyt Puhutaanpa joitakin lisäominaisuuksia , joka voidaan toteuttaa 163 00:10:00,220 --> 00:10:02,690 CS50 Shuttle p-set. 164 00:10:02,690 --> 00:10:05,850 Tuossa on järjestelmä, jonka avulla voit seurata, kuinka monta 165 00:10:05,850 --> 00:10:07,520 huomauttaa käyttäjällä on. 166 00:10:07,520 --> 00:10:11,120 Pudottamalla pois matkustajia onnistuneesti, he voivat saada pisteitä. 167 00:10:11,120 --> 00:10:15,100 Mutta yrittää pudottaa pois matkustajia jos ei ole mitään talon lähellä, 168 00:10:15,100 --> 00:10:16,980 hyvin, he voivat saada rangaista siitä. 169 00:10:16,980 --> 00:10:21,790 Joten ehkä haluat seurata pistettä globaali muuttuja. 170 00:10:21,790 --> 00:10:25,970 >> Voit toteuttaa ehkä ajastin, jossa käyttäjällä on tietty määrä 171 00:10:25,970 --> 00:10:29,800 aikaa poimia ja pudota pois tietty määrä matkustajia. 172 00:10:29,800 --> 00:10:33,280 Ehkä jopa integroida tämän kanssa pisteytysjärjestelmä. 173 00:10:33,280 --> 00:10:39,970 Tai voit Muokkaa kaaviota siten, että matkustajat ovat järjestetty talon. 174 00:10:39,970 --> 00:10:45,250 Jotta olisi todennäköisesti eräänlainen toimiakseen to shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Voit toteuttaa lentävät ominaisuus, jossa, jos käyttäjä syöttää Konami 176 00:10:49,240 --> 00:10:53,460 koodi ja sukkula irtoaa maahan ja sukkula voi lentää. 177 00:10:53,460 --> 00:10:58,890 Mutta turvallinen pudota pois, parasta tehdä shuttle purkamaan pyörät 178 00:10:58,890 --> 00:11:00,700 ensimmäisenä maahan. 179 00:11:00,700 --> 00:11:05,910 Voit myös toteuttaa teleportaatio, jos teet avattavaa 180 00:11:05,910 --> 00:11:08,380 rakennusten index.html. 181 00:11:08,380 --> 00:11:12,270 Ja valitaan yksi niistä, Käyttäjä kuljetetaan 182 00:11:12,270 --> 00:11:14,220 että rakennus kampuksella. 183 00:11:14,220 --> 00:11:16,760 OK, kuitenkin kulkea seinät joidenkin 184 00:11:16,760 --> 00:11:19,290 Rakennusten matkalla sinne. 185 00:11:19,290 --> 00:11:22,960 >> Voit myös vaihtaa nopeutta sukkula, jonka avulla käyttäjä voi lisätä 186 00:11:22,960 --> 00:11:25,490 tai vähentää nopeutta. 187 00:11:25,490 --> 00:11:28,840 Ehkä haluat globaali muuttuja seurata, kuinka paljon polttoainetta 188 00:11:28,840 --> 00:11:31,520 sukkula on, vähentämällä se matkan varrella. 189 00:11:31,520 --> 00:11:35,860 Kun osut nolla, vaikka, sukkula ei voi liikkua, paitsi jos olet 190 00:11:35,860 --> 00:11:40,610 tankattiin, ehkä käyttämällä painiketta tai jopa tehdä oman huoltoasema. 191 00:11:40,610 --> 00:11:43,240 >> Mutta se ei tietenkään ole tyhjentävä luettelo. 192 00:11:43,240 --> 00:11:46,340 Tutustu spec koko listata, tai ehkä ehdottaa 193 00:11:46,340 --> 00:11:47,840 omia oman TF. 194 00:11:47,840 --> 00:11:48,950 Taivas on rajana. 195 00:11:48,950 --> 00:11:53,110 Tämä on viimeinen CS50 p-set, joten pitää hauskaa sen kanssa. 196 00:11:53,110 --> 00:11:56,360 Tämä oli CS50 Shuttle. 197 00:11:56,360 --> 00:11:59,230 >> Minun täytyy sanoa, se on ollut ilo tekevät näitä sinulle 198 00:11:59,230 --> 00:12:00,400 tuotantotiimi. 199 00:12:00,400 --> 00:12:04,330 Ja toivon, että olet nauttia niistä, samoin. 200 00:12:04,330 --> 00:12:06,040 Nimeni on Zamyla. 201 00:12:06,040 --> 00:12:08,310 Ja tämä oli CS50. 202 00:12:08,310 --> 00:12:16,363