1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA CHAN: Naam, hapa sisi ni, mwisho p-kuweka katika CS50. 3 00:00:13,360 --> 00:00:17,040 Kumpongeza wenyewe na kuwa na kuja hadi sasa tangu Habari yako ya kwanza 4 00:00:17,040 --> 00:00:20,090 Viumbe vyote na Printing Up Pyramids kwa Mario. 5 00:00:20,090 --> 00:00:21,930 Unaweza kufanywa tovuti wiki iliyopita. 6 00:00:21,930 --> 00:00:25,110 Na tunakwenda kuwa maamuzi ya mtu mwingine wiki hii, moja kwamba utapata 7 00:00:25,110 --> 00:00:28,570 gari karibu Harvard ya chuo hicho, kuokota up wafanyakazi CS50 na 8 00:00:28,570 --> 00:00:31,910 kuwaleta nyuma yao nyumba za makazi. 9 00:00:31,910 --> 00:00:35,400 >> Sasa, wiki iliyopita sisi kazi katika PHP, server upande lugha. 10 00:00:35,400 --> 00:00:38,250 Kwa hili p-set, sisi ni kupata vishawishi kwa JavaScript, ambayo ni 11 00:00:38,250 --> 00:00:40,610 mteja upande lugha. 12 00:00:40,610 --> 00:00:44,020 Basi hebu tuangalie baadhi ya usambazaji kificho kwamba ni zinazotolewa na 13 00:00:44,020 --> 00:00:46,210 wewe kwa hili p-kuweka. 14 00:00:46,210 --> 00:00:49,700 Katika folder JavaScript, kutakuwa na kuwa kundi la JavaScript files. 15 00:00:49,700 --> 00:00:53,600 >> Kuna buildings.js, ambayo ina safu ya majengo karibu Harvard 16 00:00:53,600 --> 00:00:57,340 chuo na taarifa zao na msimamo. 17 00:00:57,340 --> 00:01:01,630 Houses.js ni safu ya Harvard nyumba za makazi na wao 18 00:01:01,630 --> 00:01:04,030 latitudo na longitude. 19 00:01:04,030 --> 00:01:08,600 Passengers.js ina safu ya abiria, wanachama CS50 wafanyakazi 20 00:01:08,600 --> 00:01:11,640 kuwa wewe utakuwa kuleta nyuma nyumba zao za kuishi. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, ambayo ina mengi ya kazi ya kufanya na harakati. 22 00:01:16,450 --> 00:01:19,500 Kama wewe ni hesabu nia, basi Mimi kuwakaribisha kuangalia. 23 00:01:19,500 --> 00:01:23,530 Lakini huna haja ya kuelewa kila kitu huko. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, ambayo inahusika na Harakati Shuttle ya. 25 00:01:26,710 --> 00:01:31,450 Na index.html ni ukurasa wa nyumbani ambapo kila kitu kinachotokea, kwa kweli, ambapo 26 00:01:31,450 --> 00:01:33,610 user ni mazungumzo na tovuti. 27 00:01:33,610 --> 00:01:39,110 >> Service.css ni karatasi CSS style, ambayo kwa kuongeza Twitter 28 00:01:39,110 --> 00:01:43,960 Bootstrap Library, udhibiti jinsi index.html inaonekana. 29 00:01:43,960 --> 00:01:48,190 Na kisha sisi pia kuwa service.js, ambayo ina kazi huduma kwa 30 00:01:48,190 --> 00:01:49,010 Shuttle. 31 00:01:49,010 --> 00:01:53,010 Na hapa ni wapi utaenda kuwa kujaza katika baadhi ya kwa-do ya. 32 00:01:53,010 --> 00:01:56,600 >> Sasa hebu tuangalie vitu na arrays associative katika JavaScript, 33 00:01:56,600 --> 00:01:59,360 ambayo, kwa nia na madhumuni yote, ni kubadilishana. 34 00:01:59,360 --> 00:02:03,030 Kama nilitaka kufanya kitu variable aitwaye wand, napenda 35 00:02:03,030 --> 00:02:04,290 kutangaza. 36 00:02:04,290 --> 00:02:09,350 Na ndani ya braces wale curly, napenda bayana, msingi ni nyati, mbao 37 00:02:09,350 --> 00:02:12,710 ni cherry, na urefu ni 13. 38 00:02:12,710 --> 00:02:16,370 >> Sasa, siwezi pia kupata maadili wa vitu kwa kutumia 39 00:02:16,370 --> 00:02:18,270 associative safu nukuu. 40 00:02:18,270 --> 00:02:22,610 Hivyo wand index msingi, siwezi kuweka sawa sawa kwa nyati, au 41 00:02:22,610 --> 00:02:24,710 kuangalia kwamba kama mimi haja. 42 00:02:24,710 --> 00:02:28,890 Au naweza kutumia dot operator wand.wood sawa na cherry, na 43 00:02:28,890 --> 00:02:30,280 kadhalika na kadhalika. 44 00:02:30,280 --> 00:02:33,930 Hivyo unaweza kuona kwamba arrays associative na vitu katika JavaScript ni kwenda kuwa 45 00:02:33,930 --> 00:02:37,710 kubadilishana, na mapenzi kuja katika Handy kabisa. 46 00:02:37,710 --> 00:02:41,570 >> Kisha sisi kuona safu ya majengo katika buildings.js, 47 00:02:41,570 --> 00:02:43,870 tena, safu ya vitu. 48 00:02:43,870 --> 00:02:48,500 Kama nilitaka kufanya safu ya bora majengo juu ya Harvard ya chuo hicho, kisha 49 00:02:48,500 --> 00:02:49,710 Napenda kufanya hivyo kama ifuatavyo. 50 00:02:49,710 --> 00:02:55,250 Kutumia nukuu hii kitu, ambapo Mimi kuhifadhi mizizi, jina, anwani, 51 00:02:55,250 --> 00:03:00,260 latitude, na longitude kwa kila moja kujenga kitu. 52 00:03:00,260 --> 00:03:02,930 >> Hebu haraka majadiliano juu ya vigezo katika JavaScript. 53 00:03:02,930 --> 00:03:07,760 Kama PHP, JavaScript vigezo ni weakly au loosely typed. 54 00:03:07,760 --> 00:03:14,120 Kujenga variable ndani, wewe kiambishi jina variable na V-A-R, var. 55 00:03:14,120 --> 00:03:17,010 Sasa, katika JavaScript, kazi mapenzi kupunguza wigo wa vigezo. 56 00:03:17,010 --> 00:03:20,600 Hivyo kama una variable za mitaa ndani ya kazi, kisha kazi nyingine 57 00:03:20,600 --> 00:03:22,060 hawawezi kupata hiyo. 58 00:03:22,060 --> 00:03:26,090 >> Lakini tofauti na C, loops na hali hawana kupunguza wigo wa kutofautiana. 59 00:03:26,090 --> 00:03:30,600 Hivyo hata kama wewe kutangaza ndani ya hali, kazi nzima 60 00:03:30,600 --> 00:03:32,810 kuwa na huduma hiyo. 61 00:03:32,810 --> 00:03:35,820 Sasa, bila var, variable itakuwa kimataifa. 62 00:03:35,820 --> 00:03:39,170 Hivyo kama wewe tu kutangaza jina na kuwapa thamani, basi, kwamba variable 63 00:03:39,170 --> 00:03:41,900 itakuwa variable kimataifa katika JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Sasa, katika nyumba, tuna associative safu ya vitu aina ya jeshi, ambapo 65 00:03:48,480 --> 00:03:52,100 kila nyumba ni tu latitude na longitude. 66 00:03:52,100 --> 00:03:55,140 Basi tuna abiria safu, ambayo ni safu 67 00:03:55,140 --> 00:03:57,370 ya kitu aina ya abiria. 68 00:03:57,370 --> 00:04:01,620 Hivyo kila abiria ina user jina, jina, na nyumba. 69 00:04:01,620 --> 00:04:04,840 >> Taarifa kwamba mimi kusema ya aina abiria, ambayo kwa kweli ina maana 70 00:04:04,840 --> 00:04:08,150 kwamba kila kitu ina sawa muhimu thamani jozi. 71 00:04:08,150 --> 00:04:12,830 Hivyo kila kitu ya aina abiria ina jina la mtumiaji, jina, na nyumba. 72 00:04:12,830 --> 00:04:14,850 Basi je, tunahitaji kufanya kwa ajili ya p-kuweka? 73 00:04:14,850 --> 00:04:20,779 Naam, tunahitaji kuruhusu watumiaji kuchukua up wafanyakazi, kwa kuonyesha yote ya 74 00:04:20,779 --> 00:04:25,080 wafanyakazi ambayo kwa sasa ni katika kuhamisha zetu, na kuacha yao mbali. 75 00:04:25,080 --> 00:04:29,395 Na kisha tutaweza pia kuzungumza kuhusu ziada makala ambayo yanaweza kutekelezwa kwa 76 00:04:29,395 --> 00:04:30,980 Shuttle p-kuweka. 77 00:04:30,980 --> 00:04:33,610 >> Lakini hebu majadiliano juu ya Pickup kwanza. 78 00:04:33,610 --> 00:04:37,480 nyuso za wafanyakazi CS50 wamekuwa sehemu zote za chuo, ambapo kila 79 00:04:37,480 --> 00:04:41,750 uso unatekelezwa kama alama mahali duniani 3D, na kama 80 00:04:41,750 --> 00:04:44,020 marker kwenye ramani yenye P2. 81 00:04:44,020 --> 00:04:47,880 Hivyo wakati mtumiaji Clicks Pickup kifungo, tunataka kuongeza jirani 82 00:04:47,880 --> 00:04:49,590 abiria kwa kuhamisha. 83 00:04:49,590 --> 00:04:53,650 Na sisi pia unataka kuondoa nafasi yao alama kutoka dunia na kuondoa yao 84 00:04:53,650 --> 00:04:58,060 marker kutoka ramani, kuonyesha kwamba wao uko katika kuhamisha wetu sasa. 85 00:04:58,060 --> 00:05:02,520 >> Hivyo ni jinsi gani sisi kuchunguza kama abiria ni ndani ya mbalimbali ya kuhamisha yetu? 86 00:05:02,520 --> 00:05:06,670 Naam, mbali ya kazi, hivyo shuttle.distance, kupita katika 87 00:05:06,670 --> 00:05:10,630 latitude na longitude, mahesabu ya umbali kutoka nafasi ya sasa 88 00:05:10,630 --> 00:05:14,220 ya kuhamisha kwa uhakika kwamba wewe taja kwa kuwa kutokana na 89 00:05:14,220 --> 00:05:15,860 latitude na longitude. 90 00:05:15,860 --> 00:05:19,180 Hivyo unaweza kutumia hii kwa mahesabu ya umbali kutoka kuhamisha 91 00:05:19,180 --> 00:05:20,310 abiria. 92 00:05:20,310 --> 00:05:24,040 >> Lakini jinsi gani unajua ambapo abiria ni? 93 00:05:24,040 --> 00:05:27,510 Naam, hiyo ni ambapo tutaweza kuwa na hariri na idadi ya kazi. 94 00:05:27,510 --> 00:05:32,500 Na idadi ya maeneo yote ya wafanyakazi abiria katika dunia 95 00:05:32,500 --> 00:05:36,300 na katika ramani, lakini haina kuhifadhi eneo lao. 96 00:05:36,300 --> 00:05:39,850 Hivyo labda unaweza kuhifadhi yao mahali alama na alama 97 00:05:39,850 --> 00:05:41,570 katika baadhi safu kimataifa. 98 00:05:41,570 --> 00:05:45,780 >> Sasa, kuna tayari ni safu kimataifa kuhifadhi taarifa kutoka kwa abiria. 99 00:05:45,780 --> 00:05:49,960 maduka ya abiria safu ya kila jina abiria na nyumba zao. 100 00:05:49,960 --> 00:05:54,985 Hivyo labda unaweza kuongeza vigezo chache kuna abiria vitu. 101 00:05:54,985 --> 00:05:58,150 >> Kutusaidia kuchunguza yote ya abiria ndani ya mbalimbali ya yetu 102 00:05:58,150 --> 00:06:02,485 kuhamisha, hebu kitanzi kwa njia zote za abiria katika abiria safu. 103 00:06:02,485 --> 00:06:07,790 kwa kitanzi katika JavaScript ili kuangalia kitu kama hii, ni sawa na 104 00:06:07,790 --> 00:06:13,200 wale kwa loops katika C. Au tunaweza kutumia mbadala kwa ajili ya kitanzi muundo, kwa 105 00:06:13,200 --> 00:06:18,680 var i katika safu, ambapo i bado kuwa index, lakini huna haja ya 106 00:06:18,680 --> 00:06:23,310 bayana array.length hali na i + +. 107 00:06:23,310 --> 00:06:26,130 >> Eneo kila abiria ni uliotolewa na wao alama mahali. 108 00:06:26,130 --> 00:06:29,800 Lakini alama mahali ni si latitude na longitude. 109 00:06:29,800 --> 00:06:34,170 Tuna kupata vigezo wale na kupata jiometri, kwa kutumia kupata 110 00:06:34,170 --> 00:06:38,180 jiometri juu ya alama mahali, na kisha mara moja tuna jiometri, kupata 111 00:06:38,180 --> 00:06:42,580 ama latitude au longitude kutumia kazi hizo. 112 00:06:42,580 --> 00:06:45,680 >> Hivyo sasa tunajua jinsi ya kuchunguza kama abiria ni ndani ya 113 00:06:45,680 --> 00:06:47,920 mbalimbali ya kuhamisha wetu. 114 00:06:47,920 --> 00:06:52,050 Mara baada ya sisi na abiria hao, tutaweza unataka kuongeza abiria yoyote ambayo ni 115 00:06:52,050 --> 00:06:53,140 ndani ya mbalimbali. 116 00:06:53,140 --> 00:06:57,580 Tunataka kuwaruhusu hop na kuchukua kiti cha kuhamisha yetu, lakini tu 117 00:06:57,580 --> 00:06:59,630 kama tuna nafasi ya kutosha yao. 118 00:06:59,630 --> 00:07:04,120 >> shuttle.seats safu zinaonyesha kama viti ni tupu, au 119 00:07:04,120 --> 00:07:05,890 ambaye ni katika kiti cha. 120 00:07:05,890 --> 00:07:11,160 Hivyo kama kiti ni tupu, kisha kiti cha itakuwa null. 121 00:07:11,160 --> 00:07:15,930 Hivyo iterate juu ya viti safu, kuangalia kwa viti tupu, kuhifadhi 122 00:07:15,930 --> 00:07:20,020 abiria katika viti wale mpaka hawana viti yoyote zaidi tupu. 123 00:07:20,020 --> 00:07:23,330 Na kwa bahati mbaya, abiria nyingine yoyote itabidi kusubiri kwa 124 00:07:23,330 --> 00:07:26,000 wakati mwingine kuhamisha inakuja chini. 125 00:07:26,000 --> 00:07:30,280 >> Mara baada ya wao kupata kuhamisha, sisi utasikia wanataka kuondoa yao alama mahali, ambayo 126 00:07:30,280 --> 00:07:32,580 ni picha zao katika dunia 3D. 127 00:07:32,580 --> 00:07:38,030 Kama nilitaka kuondoa mahali alama p, basi napenda kupata yote ya makala 128 00:07:38,030 --> 00:07:42,820 kutoka duniani yangu, Google Earth, na kisha kuondoa mahali maalum 129 00:07:42,820 --> 00:07:45,910 alama ya kutumia removeChild kazi. 130 00:07:45,910 --> 00:07:51,360 Kisha mwisho, hebu kuondoa marker, icon kwenye ramani 2D, kwa yeyote 131 00:07:51,360 --> 00:07:53,650 abiria kwamba sisi ni kuokota. 132 00:07:53,650 --> 00:07:59,790 >> Kuondoa marker m, basi mimi itabidi tu kutekeleza m.setMap null. 133 00:07:59,790 --> 00:08:03,670 Je, hii kwa ajili ya abiria yoyote ndani ya mbalimbali, na kumaliza ya Pickup. 134 00:08:03,670 --> 00:08:07,890 chati kazi wanapaswa kuonyesha wote ya abiria kwamba ni katika yako 135 00:08:07,890 --> 00:08:11,000 kuhamisha, na kiti cha tupu kama tupu. 136 00:08:11,000 --> 00:08:14,420 Hivyo chati lazima iterate juu ya shuttle.seats, kwa kuonyesha 137 00:08:14,420 --> 00:08:21,350 habari abiria kwa kila index, na kiti cha tupu kama kwamba index ni null. 138 00:08:21,350 --> 00:08:26,160 >> Sasa kama HTML Nakala kuweka ndani ya JavaScript variable, kisha kwa kutumia 139 00:08:26,160 --> 00:08:31,950 document.getElementByID, chati unaweza hariri HTML ndani ya kuwa kutokana na 140 00:08:31,950 --> 00:08:36,140 hiki na kumshirikisha HTML Nakala 141 00:08:36,140 --> 00:08:40,840 document.getElementByID ndani HTML kutofautiana. 142 00:08:40,840 --> 00:08:46,180 Wakati watumiaji bonyeza Drop Off katika index.html, kutakuwa na kuwaita 143 00:08:46,180 --> 00:08:47,160 dropoff kazi. 144 00:08:47,160 --> 00:08:49,510 Na ni kazi yetu kutekeleza hiyo. 145 00:08:49,510 --> 00:08:54,150 >> Katika dropoff, tutaweza unataka kuondoa yoyote abiria kutoka kuhamisha tu kama 146 00:08:54,150 --> 00:08:58,740 tuko katika aina mbalimbali ya marudio yao, nyumba zao za kuishi. 147 00:08:58,740 --> 00:09:03,300 Hivyo dropoff itakuwa na kuangalia kama kuhamisha ni katika aina mbalimbali ya yoyote ya 148 00:09:03,300 --> 00:09:08,200 nyumba, na kuondoa yoyote zinahitajika abiria kutoka kuhamisha. 149 00:09:08,200 --> 00:09:11,020 Hivyo ni jinsi gani sisi kuangalia kama sisi ni katika aina mbalimbali ya nyumba yoyote? 150 00:09:11,020 --> 00:09:16,630 Vizuri, lakini tena, tutaweza kufanya matumizi ya shuttle.distance kazi, kupita katika 151 00:09:16,630 --> 00:09:20,990 latitude na longitude ya uhakika kwamba sisi ni kuangalia dhidi ya. 152 00:09:20,990 --> 00:09:22,730 >> Lakini ni nini pointi hizo? 153 00:09:22,730 --> 00:09:27,210 Naam, nyumba safu, kama unakumbuka katika houses.js, maduka 154 00:09:27,210 --> 00:09:32,790 latitude na longitude ya kila nyumba katika safu associative, ambapo kila 155 00:09:32,790 --> 00:09:35,980 index ni jina la nyumba hiyo. 156 00:09:35,980 --> 00:09:37,590 Kisha kuondoa abiria - 157 00:09:37,590 --> 00:09:41,820 vizuri, tu kama sisi ni katika aina mbalimbali ya zao nyumba kwamba wanataka kwenda. 158 00:09:41,820 --> 00:09:46,380 Hivyo tena, kumbuka kwamba abiria maduka ya nyumba kwamba kila abiria 159 00:09:46,380 --> 00:09:48,850 anataka kwenda. 160 00:09:48,850 --> 00:09:51,670 Kama wao ni ndani ya mbalimbali ya zao nyumba, basi tutaweza kuondoa kwamba 161 00:09:51,670 --> 00:09:57,200 abiria kutoka shuttle.seats na kuweka nafasi yao katika safu ya null. 162 00:09:57,200 --> 00:10:00,220 >> Sasa hebu majadiliano kuhusu baadhi ya sifa za ziada ambayo yanaweza kutekelezwa katika 163 00:10:00,220 --> 00:10:02,690 CS50 Shuttle p-kuweka. 164 00:10:02,690 --> 00:10:05,850 Kuna mfumo wa uhakika ambapo kuweka wimbo wa ngapi 165 00:10:05,850 --> 00:10:07,520 anasema mtumiaji. 166 00:10:07,520 --> 00:10:11,120 Kwa kuacha mbali abiria mafanikio, wanaweza kupata pointi. 167 00:10:11,120 --> 00:10:15,100 Lakini kwa kujaribu kuacha mbali abiria ambapo kuna si nyumba yoyote karibu, 168 00:10:15,100 --> 00:10:16,980 vizuri, wanaweza kupata adhabu kwa ajili hiyo. 169 00:10:16,980 --> 00:10:21,790 Hivyo labda unataka kuweka wimbo wa pointi katika variable kimataifa. 170 00:10:21,790 --> 00:10:25,970 >> Unaweza kutekeleza labda timer, ambapo user ana kiasi fulani cha 171 00:10:25,970 --> 00:10:29,800 wakati wa kuchukua na kuacha mbali a idadi fulani ya abiria. 172 00:10:29,800 --> 00:10:33,280 Labda hata kuunganisha hii na mfumo wa uhakika. 173 00:10:33,280 --> 00:10:39,970 Au unaweza Hariri Chati kama kwamba abiria ni vyema na nyumba. 174 00:10:39,970 --> 00:10:45,250 Ili pengine ingekuwa aina kazi kwa shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Unaweza kutekeleza kipengele kuruka, ambapo kama user pembejeo Konami 176 00:10:49,240 --> 00:10:53,460 code, basi kuhamisha akanyanyua mbali ardhi na kuhamisha inaweza kuruka. 177 00:10:53,460 --> 00:10:58,890 Lakini kwa tone salama mbali, bora ya kufanya kuhamisha nchi magurudumu yake juu ya 178 00:10:58,890 --> 00:11:00,700 ardhi ya kwanza. 179 00:11:00,700 --> 00:11:05,910 Unaweza pia kutekeleza teleportation, ambapo kufanya kushuka chini katika orodha ya 180 00:11:05,910 --> 00:11:08,380 majengo katika index.html. 181 00:11:08,380 --> 00:11:12,270 Na kuchagua moja ya hizo, user atapelekwa 182 00:11:12,270 --> 00:11:14,220 kwamba jengo juu ya chuo. 183 00:11:14,220 --> 00:11:16,760 OK, ingawa, kwa kusafiri kwa njia ya kuta za baadhi 184 00:11:16,760 --> 00:11:19,290 majengo juu ya njia yako huko. 185 00:11:19,290 --> 00:11:22,960 >> Unaweza pia mabadiliko ya kasi ya kuhamisha, kuruhusu user kuongeza 186 00:11:22,960 --> 00:11:25,490 au kupungua kwa kasi. 187 00:11:25,490 --> 00:11:28,840 Labda unataka variable kimataifa kuweka wimbo wa jinsi mafuta mengi the 188 00:11:28,840 --> 00:11:31,520 kuhamisha ina, kupungua kwa kama wewe kwenda pamoja. 189 00:11:31,520 --> 00:11:35,860 Mara baada ya kugonga zero, ingawa, kuhamisha haitakuwa na uwezo wa hoja kama wewe wameweza 190 00:11:35,860 --> 00:11:40,610 refueled, labda kwa kutumia kifungo, au hata kufanya yako kituo cha mafuta mwenyewe. 191 00:11:40,610 --> 00:11:43,240 >> Lakini kwamba hakika si orodha kamili. 192 00:11:43,240 --> 00:11:46,340 Angalia spec kwa full orodha, au labda kupendekeza 193 00:11:46,340 --> 00:11:47,840 yako mwenyewe TF yako. 194 00:11:47,840 --> 00:11:48,950 anga ni ya kikomo. 195 00:11:48,950 --> 00:11:53,110 Hii ni mara CS50 p-kuweka yako, hivyo kuwa na furaha na hayo. 196 00:11:53,110 --> 00:11:56,360 Hii ilikuwa CS50 Shuttle. 197 00:11:56,360 --> 00:11:59,230 >> Mimi nimepata kusema, imekuwa ni furaha kufanya haya kwa ajili yenu na 198 00:11:59,230 --> 00:12:00,400 uzalishaji wa timu. 199 00:12:00,400 --> 00:12:04,330 Na mimi matumaini yetu kwamba wameweza kufurahia yao, kama vile. 200 00:12:04,330 --> 00:12:06,040 Jina langu ni Zamyla. 201 00:12:06,040 --> 00:12:08,310 Na hii ilikuwa CS50. 202 00:12:08,310 --> 00:12:16,363