1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA CHAN: Jæja, hér erum við, síðasta p-setja í CS50. 3 00:00:13,360 --> 00:00:17,040 Hamingju yður frá að hafa komið svo langt síðan fyrsta Hello þinni 4 00:00:17,040 --> 00:00:20,090 Heimar og Prentun Up Pýramýda fyrir Mario. 5 00:00:20,090 --> 00:00:21,930 Þú lést á vefsíðu síðustu viku. 6 00:00:21,930 --> 00:00:25,110 Og við erum að fara að vera að gera eitthvað annað í þessari viku, eitt sem gerir þér kleift að 7 00:00:25,110 --> 00:00:28,570 keyra um Harvard háskólasvæðinu, tína upp CS50 starfsmenn og 8 00:00:28,570 --> 00:00:31,910 uppeldi þá aftur til þeirra íbúðarhús. 9 00:00:31,910 --> 00:00:35,400 >> Nú í síðustu viku við unnið í PHP, hlið miðlara tungumál. 10 00:00:35,400 --> 00:00:38,250 Fyrir þessa p-sett, við erum að ná upp JavaScript, sem er 11 00:00:38,250 --> 00:00:40,610 viðskiptavinur hlið tungumál. 12 00:00:40,610 --> 00:00:44,020 Þannig að við skulum taka a líta á sumir af the dreifingu kóða sem er veitt til 13 00:00:44,020 --> 00:00:46,210 þér fyrir þetta p-setja. 14 00:00:46,210 --> 00:00:49,700 Í Javascript möppunni, það verður vera fullt af JavaScript skrá. 15 00:00:49,700 --> 00:00:53,600 >> Það er buildings.js, sem inniheldur array bygginga kringum Harvard 16 00:00:53,600 --> 00:00:57,340 háskólasvæðinu með upplýsingum og stöðu. 17 00:00:57,340 --> 00:01:01,630 Houses.js er fylki af Harvard íbúðarhús með þeirra 18 00:01:01,630 --> 00:01:04,030 breiddargráðum og longitudes. 19 00:01:04,030 --> 00:01:08,600 Passengers.js inniheldur fjölda farþega, CS50 starfsfólk 20 00:01:08,600 --> 00:01:11,640 að þú munt vera að koma aftur til íbúðarhús þeirra. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, sem inniheldur mikið af aðgerðir til að gera með hreyfingu. 22 00:01:16,450 --> 00:01:19,500 Ef þú ert stærðfræðilega sinnaður, þá Ég fagna þér að kíkja. 23 00:01:19,500 --> 00:01:23,530 En þú þarft ekki að skilja Allt við það. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, sem fjallar hreyfing Skutla er. 25 00:01:26,710 --> 00:01:31,450 Og index.html er heimasíða þar allt gerist, í raun, þar sem 26 00:01:31,450 --> 00:01:33,610 notandi er samskipti við síðuna. 27 00:01:33,610 --> 00:01:39,110 >> Service.css er CSS stíll lak, sem auk þess um Twitter 28 00:01:39,110 --> 00:01:43,960 Ræsi Library, eftirlit hvernig index.html útlit. 29 00:01:43,960 --> 00:01:48,190 Og þá höfum við líka service.js sem inniheldur þjónustubeiðnir virka fyrir 30 00:01:48,190 --> 00:01:49,010 Shuttle. 31 00:01:49,010 --> 00:01:53,010 Og hér er þar sem þú ert að fara að vera fylla í sumum af til-do er. 32 00:01:53,010 --> 00:01:56,600 >> Nú skulum taka a líta á hlutum og tengin fylki í JavaScript, 33 00:01:56,600 --> 00:01:59,360 sem, fyrir alla intents og tilgangi, eru víxlanlegur. 34 00:01:59,360 --> 00:02:03,030 Ef ég vildi gera hlut breytu kallað vendi, ég myndi 35 00:02:03,030 --> 00:02:04,290 lýsa það. 36 00:02:04,290 --> 00:02:09,350 Og inni þessum hrokkið axlabönd, myndi ég tilgreina, kjarninn er Einhyrningsins, viðurinn 37 00:02:09,350 --> 00:02:12,710 er lífrænt ræktað, og lengdin er 13. 38 00:02:12,710 --> 00:02:16,370 >> Nú get ég líka aðgang að gildi af hlutum með 39 00:02:16,370 --> 00:02:18,270 tengin array ritháttur. 40 00:02:18,270 --> 00:02:22,610 Svo vendi vísitölu algerlega, get ég stillt sem jafn Einhyrningsins, eða 41 00:02:22,610 --> 00:02:24,710 athuga að ef ég þarf. 42 00:02:24,710 --> 00:02:28,890 Eða ég get notað punktur stjórnandi wand.wood jafngildir kirsuber, og 43 00:02:28,890 --> 00:02:30,280 svo framvegis og svo framvegis. 44 00:02:30,280 --> 00:02:33,930 Svo þú sérð að tengin fylki og hlutir í JavaScript er að fara að vera 45 00:02:33,930 --> 00:02:37,710 víxlanlegur og mun komið í alveg vel. 46 00:02:37,710 --> 00:02:41,570 >> Þá sjáum við fjölda bygginga í buildings.js, 47 00:02:41,570 --> 00:02:43,870 aftur, fylki af hlutum. 48 00:02:43,870 --> 00:02:48,500 Ef ég vildi gera array af bestu byggingar á Harvard háskólasvæðinu, þá 49 00:02:48,500 --> 00:02:49,710 Ég myndi gera það eins og hér segir. 50 00:02:49,710 --> 00:02:55,250 Using this mótmæla táknun, þar Ég geyma rót, nafn, heimilisfang, 51 00:02:55,250 --> 00:03:00,260 breiddar, og lengdargráðu fyrir hvert einn bygging mótmæla. 52 00:03:00,260 --> 00:03:02,930 >> Við skulum tala fljótt um breytur JavaScript. 53 00:03:02,930 --> 00:03:07,760 Eins og PHP, JavaScript breytur eru veikt eða lauslega slegið. 54 00:03:07,760 --> 00:03:14,120 Til að búa til staðbundna breytu, forskeyti þú breytan nafn með V-A-R, var. 55 00:03:14,120 --> 00:03:17,010 Nú, í JavaScript, aðgerðir munu takmarka umfang breytur. 56 00:03:17,010 --> 00:03:20,600 Svo ef þú hafa a heimamaður breytu innan fall, þá aðrar aðgerðir 57 00:03:20,600 --> 00:03:22,060 getur ekki opnað það. 58 00:03:22,060 --> 00:03:26,090 >> En ólíkt C, lykkjur og skilyrði ekki takmarka umfang breytu. 59 00:03:26,090 --> 00:03:30,600 Svo jafnvel ef þú lýsa það inni í ástand, allt aðgerð mun 60 00:03:30,600 --> 00:03:32,810 hafa aðgang að henni. 61 00:03:32,810 --> 00:03:35,820 Nú, án þess Var, breytan á heimsvísu. 62 00:03:35,820 --> 00:03:39,170 Þannig að ef þú lýsa bara nafnið og úthluta gildi, þá breytu 63 00:03:39,170 --> 00:03:41,900 verður alþjóðlegt breytu JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Nú, í hús, höfum við tengið array af gestgjafi tegund mótmæla, þar 65 00:03:48,480 --> 00:03:52,100 Sérhvert hús er bara breiddar og lengdargráðu. 66 00:03:52,100 --> 00:03:55,140 Þá höfum við farþega array, sem er fylki 67 00:03:55,140 --> 00:03:57,370 af gerðinni mótmæla farþega. 68 00:03:57,370 --> 00:04:01,620 Svo hefur hver farþegi notanda nafn, heiti og hús. 69 00:04:01,620 --> 00:04:04,840 >> Takið eftir að ég er að segja af gerðinni farþega, sem í raun þýðir bara 70 00:04:04,840 --> 00:04:08,150 að sérhver hlutur hefur að Sami lykill gildi par. 71 00:04:08,150 --> 00:04:12,830 Svo hefur sérhver hlutur af taginu farþega notandi nafn, nafn, og hús. 72 00:04:12,830 --> 00:04:14,850 Svo hvað þurfum við að gert fyrir p-setja? 73 00:04:14,850 --> 00:04:20,779 Jæja, við þurfum að leyfa notendum að velja upp starfsfólki, til að birta allar 74 00:04:20,779 --> 00:04:25,080 Starfsmenn sem eru nú í skutla okkar, og til að falla þá burt. 75 00:04:25,080 --> 00:04:29,395 Og þá munum við einnig tala um auka aðgerðir sem hægt er að innleiða til 76 00:04:29,395 --> 00:04:30,980 Shuttle p-setja. 77 00:04:30,980 --> 00:04:33,610 >> En við skulum tala um pallbíll fyrst. 78 00:04:33,610 --> 00:04:37,480 Andlit CS50 starfsmenn hafa verið gróðursett allt háskólasvæðið, þar sem hver 79 00:04:37,480 --> 00:04:41,750 andlit er útfært sem setja merki á 3D jörðu, og þegar A 80 00:04:41,750 --> 00:04:44,020 merki á 2D kortinu. 81 00:04:44,020 --> 00:04:47,880 Svo þegar notandi smellir á Pickup hnappinn, viljum við að bæta í nágrenninu 82 00:04:47,880 --> 00:04:49,590 farþegum til skutla. 83 00:04:49,590 --> 00:04:53,650 Og við viljum líka að fjarlægja þeirra stað merkja frá heiminum og fjarlægja þeirra 84 00:04:53,650 --> 00:04:58,060 merki frá kortinu, sem gefur til kynna að þeir eru í skutla okkar núna. 85 00:04:58,060 --> 00:05:02,520 >> Og hvernig eigum við að uppgötva ef farþegar ert innan skutla okkar? 86 00:05:02,520 --> 00:05:06,670 Jæja, sem virka fjarlægð, svo shuttle.distance, sem liggur í 87 00:05:06,670 --> 00:05:10,630 breiddar-og lengdargráðu, mun reikna fjarlægð frá núverandi stöðu 88 00:05:10,630 --> 00:05:14,220 af skutla að því marki sem þú tilgreinir við að miðað 89 00:05:14,220 --> 00:05:15,860 breiddar-og lengdargráðu. 90 00:05:15,860 --> 00:05:19,180 Svo þú getur notað þetta til að reikna fjarlægð frá rúta til 91 00:05:19,180 --> 00:05:20,310 farþegar. 92 00:05:20,310 --> 00:05:24,040 >> En hvernig veistu hvar farþegar eru? 93 00:05:24,040 --> 00:05:27,510 Jæja, það er þar sem við verðum að breyta byggja virka. 94 00:05:27,510 --> 00:05:32,500 Byggja stöðum allt frá starfsfólki farþega í heiminn 95 00:05:32,500 --> 00:05:36,300 og inn í kortinu, en ekki geyma staðsetningu þeirra. 96 00:05:36,300 --> 00:05:39,850 Svo kannski er hægt að geyma þeirra setja merki og merki 97 00:05:39,850 --> 00:05:41,570 í sumum alþjóðlegum fylkisins. 98 00:05:41,570 --> 00:05:45,780 >> Nú, það sem þegar er alþjóðlegt array geyma upplýsingar frá farþegum. 99 00:05:45,780 --> 00:05:49,960 Farþegar array geymir hver nafn farþega og húsið þeirra. 100 00:05:49,960 --> 00:05:54,985 Svo kannski er hægt að bæta við nokkrum þáttum það farþega mótmæla. 101 00:05:54,985 --> 00:05:58,150 >> Til að hjálpa okkur að uppgötva alla farþega innan okkar 102 00:05:58,150 --> 00:06:02,485 skutla, lykkja skulum gegnum öll farþegar í farþega fylkisins. 103 00:06:02,485 --> 00:06:07,790 For lykkju í JavaScript gæti litið eitthvað eins og þetta, mjög svipað 104 00:06:07,790 --> 00:06:13,200 þá fyrir lykkjur í C. Eða við getum notað val fyrir lykkja, fyrir 105 00:06:13,200 --> 00:06:18,680 var ég í fylkinu, þar sem ég mun enn vera vísitalan, en þú þarft ekki að 106 00:06:18,680 --> 00:06:23,310 tilgreina array.length ástand og ég + +. 107 00:06:23,310 --> 00:06:26,130 >> Staðsetning hver farþegi er gefið setja merki þeirra. 108 00:06:26,130 --> 00:06:29,800 En staðurinn árangur er ekki breiddar og lengdargráðu. 109 00:06:29,800 --> 00:06:34,170 Við verðum að opna þau breytur með fá rúmfræði, með fá 110 00:06:34,170 --> 00:06:38,180 rúmfræði á þeim stað merkja, og þá þegar við höfum rúmfræði, fá 111 00:06:38,180 --> 00:06:42,580 annaðhvort breiddar eða lengdar nota þessar aðgerðir. 112 00:06:42,580 --> 00:06:45,680 >> Svo nú vitum við hvernig á að greina hvort farþegar eru innan 113 00:06:45,680 --> 00:06:47,920 svið skutla okkar. 114 00:06:47,920 --> 00:06:52,050 Þegar við höfum þá farþega, munum við langar að bæta við farþega sem eru 115 00:06:52,050 --> 00:06:53,140 innan þess svið. 116 00:06:53,140 --> 00:06:57,580 Við viljum leyfa þeim að hoppa á og taka sæti á skutla okkar, en aðeins 117 00:06:57,580 --> 00:06:59,630 ef við höfum nóg pláss á þeim. 118 00:06:59,630 --> 00:07:04,120 >> The shuttle.seats array mun kynna hvort sæti eru tóm, eða 119 00:07:04,120 --> 00:07:05,890 sem er í því sæti. 120 00:07:05,890 --> 00:07:11,160 Svo ef sæti er tómur, þá sem sæti verður null. 121 00:07:11,160 --> 00:07:15,930 Svo iterate yfir sætum fylking, stöðva fyrir auð sæti, geyma 122 00:07:15,930 --> 00:07:20,020 farþega í þessum sætum þar til þú ekki hafa allir fleiri tóm sæti. 123 00:07:20,020 --> 00:07:23,330 Og því miður, allir aðrir farþegar verður að bíða eftir að 124 00:07:23,330 --> 00:07:26,000 næst þegar skutla kemur niður. 125 00:07:26,000 --> 00:07:30,280 >> Þegar þeir fá á skutla, munum við viljum að fjarlægja setja merki sitt, sem 126 00:07:30,280 --> 00:07:32,580 er mynd þeirra í 3D heiminum. 127 00:07:32,580 --> 00:07:38,030 Ef ég vildi að fjarlægja setja merki á bls, þá myndi ég fá alla þá valkosti 128 00:07:38,030 --> 00:07:42,820 frá jörðinni minni, frá Google Earth, og þá fjarlægja þessi sérstakur staður 129 00:07:42,820 --> 00:07:45,910 merkja með removeChild virka. 130 00:07:45,910 --> 00:07:51,360 Þá loks, við skulum fjarlægja merkið, táknið á 2D kortinu, fyrir hvaða 131 00:07:51,360 --> 00:07:53,650 farþega sem við erum að tína upp. 132 00:07:53,650 --> 00:07:59,790 >> Til að fjarlægja merki m, þá ég bara framkvæma m.setMap null. 133 00:07:59,790 --> 00:08:03,670 Gera þetta fyrir hvaða farþega á svæðinu, og þú hefur lokið pallbíll. 134 00:08:03,670 --> 00:08:07,890 Töfluna fall ætti að sýna öllum af farþegum sem eru í þínum 135 00:08:07,890 --> 00:08:11,000 skutla, og tóm sæti ef tóm. 136 00:08:11,000 --> 00:08:14,420 Svo Myndina ber iterate yfir shuttle.seats, sýna að 137 00:08:14,420 --> 00:08:21,350 farþega upplýsingar fyrir hvert vísitölu, og tóm sæti ef að vísitalan er núll. 138 00:08:21,350 --> 00:08:26,160 >> Nú ef HTML texti er sett inni í JavaScript breytu, þá með því að nota 139 00:08:26,160 --> 00:08:31,950 document.getElementById, graf getur breyta innri HTML á að miðað 140 00:08:31,950 --> 00:08:36,140 þáttur af framselja HTML texta til að 141 00:08:36,140 --> 00:08:40,840 document.getElementById innri HTML breytu. 142 00:08:40,840 --> 00:08:46,180 Þegar notendur smella á Drop Off hnappur í index.html, munum það að hringja í 143 00:08:46,180 --> 00:08:47,160 dropoff virka. 144 00:08:47,160 --> 00:08:49,510 Og það er starf okkar að framkvæma það. 145 00:08:49,510 --> 00:08:54,150 >> Í dropoff, munum við viljum að fjarlægja eitthvað farþega frá skutla aðeins ef 146 00:08:54,150 --> 00:08:58,740 við erum í bilinu áfangastað, íbúðabyggð hús þeirra. 147 00:08:58,740 --> 00:09:03,300 Svo dropoff verður að athuga hvort Skutla er á bilinu eitthvað af 148 00:09:03,300 --> 00:09:08,200 hús og fjarlægja allir þörf farþega frá skutla. 149 00:09:08,200 --> 00:09:11,020 Og hvernig eigum við að athuga hvort við erum í ýmsum hvaða hús? 150 00:09:11,020 --> 00:09:16,630 Jæja, enn og aftur, við munum nýta sér shuttle.distance virka, sem liggur í 151 00:09:16,630 --> 00:09:20,990 breiddar-og lengdargráðu á þeim punkti að við erum að athuga á móti. 152 00:09:20,990 --> 00:09:22,730 >> En hvað eru þessir punktar? 153 00:09:22,730 --> 00:09:27,210 Jæja, húsin array, ef þú manst í houses.js, geymir 154 00:09:27,210 --> 00:09:32,790 breiddar-og lengdargráðu á hvert hús í að tengin array, þar sem hver 155 00:09:32,790 --> 00:09:35,980 Vísitalan er nafn úr því húsi. 156 00:09:35,980 --> 00:09:37,590 Þá að fjarlægja farþega - 157 00:09:37,590 --> 00:09:41,820 Jæja, aðeins ef við erum í bilinu þeirra Húsið sem þau vilja fara til. 158 00:09:41,820 --> 00:09:46,380 Svo aftur, muna að farþegar geymir húsið, sem hver farþegi 159 00:09:46,380 --> 00:09:48,850 vill fara í. 160 00:09:48,850 --> 00:09:51,670 Ef þeir eru innan þeirra hús, þá munum við fjarlægja það 161 00:09:51,670 --> 00:09:57,200 farþega frá shuttle.seats og setja staða þeirra í fylkinu til að null. 162 00:09:57,200 --> 00:10:00,220 >> Nú skulum tala um einhverja auka lögun sem hægt er að hrinda í framkvæmd í 163 00:10:00,220 --> 00:10:02,690 að CS50 Shuttle p-setja. 164 00:10:02,690 --> 00:10:05,850 There 'a benda kerfi þar þér að halda utan um hversu margir 165 00:10:05,850 --> 00:10:07,520 bendir notandi hefur. 166 00:10:07,520 --> 00:10:11,120 Fyrir að sleppa burt farþega góðum árangri, þeir geta fá stig. 167 00:10:11,120 --> 00:10:15,100 En fyrir að reyna að sleppa burt farþega þar sem það er ekki nokkurt hús í nágrenninu, 168 00:10:15,100 --> 00:10:16,980 Jæja, þeir geta fengið refsað fyrir það. 169 00:10:16,980 --> 00:10:21,790 Svo kannski þú vilt halda utan um stig í alþjóðlegum breytu. 170 00:10:21,790 --> 00:10:25,970 >> Þú getur innleiða kannski myndatöku, þar notandinn hefur ákveðið magn af 171 00:10:25,970 --> 00:10:29,800 tími til að taka upp og falla burt a ákveðinn fjölda farþega. 172 00:10:29,800 --> 00:10:33,280 Kannski jafnvel samþætta þessa með punkt kerfi. 173 00:10:33,280 --> 00:10:39,970 Eða þú getur breytt mynd þannig að farþegar eru flokkaðar eftir húsinu. 174 00:10:39,970 --> 00:10:45,250 Svo sem myndi líklega vera eins konar virka til shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Þú getur innleiða fljúgandi aðgerð, þar sem ef notandinn inntak á Konami 176 00:10:49,240 --> 00:10:53,460 kóða, þá lyftir skutla burt jörð og skutla getur flogið. 177 00:10:53,460 --> 00:10:58,890 En fyrir öruggum falla burt, best að gera The skutla lenda hjól sínu á 178 00:10:58,890 --> 00:11:00,700 jörð fyrst. 179 00:11:00,700 --> 00:11:05,910 Þú getur einnig framkvæma teleportation, þar sem þú gerir a falla dúnn listi af 180 00:11:05,910 --> 00:11:08,380 byggingar í index.html. 181 00:11:08,380 --> 00:11:12,270 Og velja einn af þeim, sem notandi verður fluttur til 182 00:11:12,270 --> 00:11:14,220 að byggja á háskólasvæðinu. 183 00:11:14,220 --> 00:11:16,760 OK, þó að ferðast í gegnum Veggir sum 184 00:11:16,760 --> 00:11:19,290 byggingar á leiðinni þangað. 185 00:11:19,290 --> 00:11:22,960 >> Þú getur líka breytt hraða skutla, leyfa the notandi til að auka 186 00:11:22,960 --> 00:11:25,490 eða minnka hraða. 187 00:11:25,490 --> 00:11:28,840 Kannski þú vilt alþjóðlegt breytu í halda utan um hversu mikið eldsneyti er 188 00:11:28,840 --> 00:11:31,520 skutla hefur, minnkandi það eins og þú fara eftir. 189 00:11:31,520 --> 00:11:35,860 Þegar þú högg núll, þó að skutla mun ekki vera hægt að færa nema þú hafir 190 00:11:35,860 --> 00:11:40,610 refueled, kannski að nota hnappinn eða jafnvel gera eigin gas stöð. 191 00:11:40,610 --> 00:11:43,240 >> En það er vissulega ekki tæmandi listi. 192 00:11:43,240 --> 00:11:46,340 Skrá sig út the sérstakur fyrir fullt lista, eða kannski leggja 193 00:11:46,340 --> 00:11:47,840 þinn eigin til að TF þínu. 194 00:11:47,840 --> 00:11:48,950 Himinn er the takmörk. 195 00:11:48,950 --> 00:11:53,110 Þetta er síðasta CS50 þinn p-sett, svo hafa gaman með það. 196 00:11:53,110 --> 00:11:56,360 Þetta var CS50 Shuttle. 197 00:11:56,360 --> 00:11:59,230 >> Ég hef fengið að segja, það er verið ánægjulegt gera þetta fyrir þig með því 198 00:11:59,230 --> 00:12:00,400 framleiðslu lið. 199 00:12:00,400 --> 00:12:04,330 Og ég vona að þú hafir notið þeirra, eins og vel. 200 00:12:04,330 --> 00:12:06,040 Mitt nafn er Zamyla. 201 00:12:06,040 --> 00:12:08,310 Og þetta var CS50. 202 00:12:08,310 --> 00:12:16,363