1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA CHAN: Е, ние сме тук, последната стр. зададена в CS50. 3 00:00:13,360 --> 00:00:17,040 Поздравете себе си от като дойде досега, тъй като първата си Hello 4 00:00:17,040 --> 00:00:20,090 Worlds и печат Up Pyramids за Марио. 5 00:00:20,090 --> 00:00:21,930 Ти направи един сайт миналата седмица. 6 00:00:21,930 --> 00:00:25,110 И ние ще трябва да се направи още една тази седмица, този, който ви позволява да 7 00:00:25,110 --> 00:00:28,570 карам из кампуса на Харвард, бране до членовете и персоналът CS50 8 00:00:28,570 --> 00:00:31,910 връщането им до тяхното жилищни сгради. 9 00:00:31,910 --> 00:00:35,400 >> Сега, миналата седмица работихме в PHP, една страна на сървъра език. 10 00:00:35,400 --> 00:00:38,250 За тази р-комплект, Ние ще се въведе за JavaScript, който е 11 00:00:38,250 --> 00:00:40,610 клиент език страна. 12 00:00:40,610 --> 00:00:44,020 Така че нека да разгледаме някои от най- разпространение на кодове, което е условие за 13 00:00:44,020 --> 00:00:46,210 ти за това р-сет. 14 00:00:46,210 --> 00:00:49,700 В папката JavaScript, там ще да бъде един куп JavaScript файлове. 15 00:00:49,700 --> 00:00:53,600 >> Има buildings.js, който съдържа масив на сградите около Harvard 16 00:00:53,600 --> 00:00:57,340 кампус с тяхната информация и позиция. 17 00:00:57,340 --> 00:01:01,630 Houses.js е масив от Харвард жилищни сгради с тяхната 18 00:01:01,630 --> 00:01:04,030 ширини и дължини. 19 00:01:04,030 --> 00:01:08,600 Passengers.js съдържа множество пътници, членовете на персонала CS50 20 00:01:08,600 --> 00:01:11,640 , че ще се върне обратно, за да техните жилищни къщи. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, че съдържа много функции, за да правите с движението. 22 00:01:16,450 --> 00:01:19,500 Ако сте математически ум, след това Приветствам ви да погледнете. 23 00:01:19,500 --> 00:01:23,530 Но не е нужно да се разбере всичко там. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, която се занимава с движение на совалката. 25 00:01:26,710 --> 00:01:31,450 И index.html е началната страница, където всичко се случва, наистина, когато 26 00:01:31,450 --> 00:01:33,610 потребител взаимодейства с обекта. 27 00:01:33,610 --> 00:01:39,110 >> Service.css е CSS стил лист, които в допълнение към Twitter 28 00:01:39,110 --> 00:01:43,960 Bootstrap Library, контроли как index.html изглежда. 29 00:01:43,960 --> 00:01:48,190 И тогава ние също имаме service.js, които съдържа обслужващи функции за 30 00:01:48,190 --> 00:01:49,010 совалката. 31 00:01:49,010 --> 00:01:53,010 И тук е мястото, където отиваш, за да бъде попълване на някои от най-направя, за да те години. 32 00:01:53,010 --> 00:01:56,600 >> Сега нека да разгледаме най-обекти и асоциативни масиви в JavaScript, 33 00:01:56,600 --> 00:01:59,360 който, за всички намерения и цели, са взаимозаменяеми. 34 00:01:59,360 --> 00:02:03,030 Ако исках да направя един обект променлива наречена пръчка, бих 35 00:02:03,030 --> 00:02:04,290 го декларира. 36 00:02:04,290 --> 00:02:09,350 А вътре в тези фигурни скоби, бих уточни, сърцевината е от еднорог, дървото 37 00:02:09,350 --> 00:02:12,710 е череша, и е с дължина 13. 38 00:02:12,710 --> 00:02:16,370 >> Сега, не мога да получите достъп до стойности на обекти, използващи 39 00:02:16,370 --> 00:02:18,270 асоциативен масив нотация. 40 00:02:18,270 --> 00:02:22,610 Така пръчка ядро ​​форум, не мога да определя че равно на еднорог, или 41 00:02:22,610 --> 00:02:24,710 провери, че ако имам нужда. 42 00:02:24,710 --> 00:02:28,890 Или мога да използвам оператора дот wand.wood равнява на череша, и 43 00:02:28,890 --> 00:02:30,280 така нататък и така нататък. 44 00:02:30,280 --> 00:02:33,930 Така че виждате, че асоциативни масиви и обекти в JavaScript ще бъде 45 00:02:33,930 --> 00:02:37,710 взаимозаменяеми, и воля дойде в доста по-удобен. 46 00:02:37,710 --> 00:02:41,570 >> След това ние виждаме множество сгради в buildings.js, 47 00:02:41,570 --> 00:02:43,870 отново, масив от обекти. 48 00:02:43,870 --> 00:02:48,500 Ако исках да се направи масив от най-добрите сгради на университета Харвард, а след това 49 00:02:48,500 --> 00:02:49,710 Бих го направите по следния начин. 50 00:02:49,710 --> 00:02:55,250 Използването на този обект нотация, където I съхранявайте корен, име, адрес, 51 00:02:55,250 --> 00:03:00,260 ширина и дължина за всяка една сграда обект. 52 00:03:00,260 --> 00:03:02,930 >> Нека най-бързо се говори за променливи в JavaScript. 53 00:03:02,930 --> 00:03:07,760 Подобно на PHP, JavaScript променливи са слабо или хлабаво написали. 54 00:03:07,760 --> 00:03:14,120 За да се създаде локална променлива, можете префикс името на променливата с V-A-R, VAR. 55 00:03:14,120 --> 00:03:17,010 Сега, в JavaScript, функции ще ограничи обхвата на променливи. 56 00:03:17,010 --> 00:03:20,600 Така че, ако имате локална променлива в рамките на функция, след други функции 57 00:03:20,600 --> 00:03:22,060 Не мога да получите достъп до нея. 58 00:03:22,060 --> 00:03:26,090 >> Но за разлика от C, вериги и условия не ограничи обхвата на променливата. 59 00:03:26,090 --> 00:03:30,600 Така че дори и да го декларира в рамките на състояние, цялата функция ще 60 00:03:30,600 --> 00:03:32,810 имат достъп до нея. 61 00:03:32,810 --> 00:03:35,820 Сега, без VAR, променливата ще бъде глобална. 62 00:03:35,820 --> 00:03:39,170 Така че, ако просто да обяви името и присвоите стойност, а след това тази променлива 63 00:03:39,170 --> 00:03:41,900 ще бъде глобална променлива в JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Сега, в къщи, ние имаме асоциативен масив от тип домакин обекти, където 65 00:03:48,480 --> 00:03:52,100 всяка къща е само на ширина и дължина. 66 00:03:52,100 --> 00:03:55,140 Тогава ние имаме пътниците масив, който е масив 67 00:03:55,140 --> 00:03:57,370 на тип обект пътник. 68 00:03:57,370 --> 00:04:01,620 Така че всеки пътник има потребителска име, име, и една къща. 69 00:04:01,620 --> 00:04:04,840 >> Забележете, че казвам на тип пътници, които наистина просто означава, 70 00:04:04,840 --> 00:04:08,150 че всеки обект има същите двойки ключови стойности. 71 00:04:08,150 --> 00:04:12,830 Така че всеки обект от тип пътник има потребителско име, име, и една къща. 72 00:04:12,830 --> 00:04:14,850 Така че това, което ни е нужно, за да направи за р-я сет? 73 00:04:14,850 --> 00:04:20,779 Е, ние трябва да позволим на потребителите да избират до членовете на персонала, за да покажете всички 74 00:04:20,779 --> 00:04:25,080 Членовете на персонала, които са в момента в нашия транспорт, както и да ги оставиш. 75 00:04:25,080 --> 00:04:29,395 И тогава ние ще говорим и за допълнително функции, които могат да бъдат приложени за 76 00:04:29,395 --> 00:04:30,980 на Shuttle р-сет. 77 00:04:30,980 --> 00:04:33,610 >> Но нека да говорим за пикапа първо. 78 00:04:33,610 --> 00:04:37,480 Лицата на CS50 служители са били засадени целия кампус, където всеки 79 00:04:37,480 --> 00:04:41,750 Лицето се изпълнява като място марка на 3D Земята, и като 80 00:04:41,750 --> 00:04:44,020 маркер на карта 2D. 81 00:04:44,020 --> 00:04:47,880 Така че, когато потребителят кликне върху Пикап бутон, искаме да добавим близката 82 00:04:47,880 --> 00:04:49,590 пътници на совалката. 83 00:04:49,590 --> 00:04:53,650 И ние също искаме да се премахне тяхното място марки от света и се премахне тяхното 84 00:04:53,650 --> 00:04:58,060 маркер от картата, което показва, че те са в нашата совалка сега. 85 00:04:58,060 --> 00:05:02,520 >> И как ще се открие, ако пътниците сте в обсега на нашата совалка? 86 00:05:02,520 --> 00:05:06,670 Е, разстоянието функция, така че shuttle.distance, преминават при 87 00:05:06,670 --> 00:05:10,630 географска ширина и дължина, ще изчисли разстоянието от текущата позиция 88 00:05:10,630 --> 00:05:14,220 на совалката до точката, че вие определяте с дадената 89 00:05:14,220 --> 00:05:15,860 географска ширина и дължина. 90 00:05:15,860 --> 00:05:19,180 Така че можете да използвате това, за да се изчисли разстояние от транспорт до 91 00:05:19,180 --> 00:05:20,310 пътници. 92 00:05:20,310 --> 00:05:24,040 >> Но как да знам къде пътниците са? 93 00:05:24,040 --> 00:05:27,510 Е, това е, когато ние ще трябва да редактирате функцията попълвам. 94 00:05:27,510 --> 00:05:32,500 Запълни места на всички членове на персонала в пътниците в света 95 00:05:32,500 --> 00:05:36,300 и в картата, но не съхранява тяхното местоположение. 96 00:05:36,300 --> 00:05:39,850 Така че може би ще може да съхранява своята поставите марка и маркери 97 00:05:39,850 --> 00:05:41,570 в някои глобалния масив. 98 00:05:41,570 --> 00:05:45,780 >> Сега, вече е глобален масив съхранение на информацията от страна на пътниците. 99 00:05:45,780 --> 00:05:49,960 Съхранява пътници масиви всеки име на пътника и техния дом. 100 00:05:49,960 --> 00:05:54,985 Така че може би можете да добавите няколко параметъра там, за да пътнически обекти. 101 00:05:54,985 --> 00:05:58,150 >> За да ни помогнете да открие всички от пътниците в обсега на нашето 102 00:05:58,150 --> 00:06:02,485 транспорт, линия Нека през всички пътниците в масива пътници. 103 00:06:02,485 --> 00:06:07,790 А за линия в JavaScript може да изглежда нещо като това, много подобен на 104 00:06:07,790 --> 00:06:13,200 тези за линии в C. Или можем да използваме един алтернатива за линия структура, за 105 00:06:13,200 --> 00:06:18,680 VAR аз в масив, където аз все още ще бъде на индекса, но не е нужно да се 106 00:06:18,680 --> 00:06:23,310 уточни array.length състояние и аз + +. 107 00:06:23,310 --> 00:06:26,130 >> Местоположение Всеки пътник е дадена от тяхно място марка. 108 00:06:26,130 --> 00:06:29,800 Но марката място не е географска ширина и дължина. 109 00:06:29,800 --> 00:06:34,170 Ние имаме достъп до тези параметри от получаване на геометрията, използвайки GET 110 00:06:34,170 --> 00:06:38,180 геометрията на марката място, а след това веднъж имаме геометрията, получаване 111 00:06:38,180 --> 00:06:42,580 или географската ширина или дължина използването на тези функции. 112 00:06:42,580 --> 00:06:45,680 >> Така че сега ние знаем как да се открие дали пътниците са в рамките на 113 00:06:45,680 --> 00:06:47,920 Обхватът на нашата совалка. 114 00:06:47,920 --> 00:06:52,050 След като имаме тези пътници, ние ще искате да добавите и всички пътници, които са 115 00:06:52,050 --> 00:06:53,140 в рамките на този диапазон. 116 00:06:53,140 --> 00:06:57,580 Искаме да им позволи да прескачате и да вземат само на място в нашия транспорт, но 117 00:06:57,580 --> 00:06:59,630 ако имаме достатъчно място за тях. 118 00:06:59,630 --> 00:07:04,120 >> Масивът shuttle.seats ще покаже дали седалките са празни, или 119 00:07:04,120 --> 00:07:05,890 кой е на това място. 120 00:07:05,890 --> 00:07:11,160 Така че, ако дадена седалка е празна, а след това това място ще бъде нула. 121 00:07:11,160 --> 00:07:15,930 Така че обхождане на масива места, проверка за празни места, съхраняване 122 00:07:15,930 --> 00:07:20,020 пътниците в тези места, докато не нямат никакви по-празни места. 123 00:07:20,020 --> 00:07:23,330 И за съжаление, всички други пътници ще трябва да се изчака 124 00:07:23,330 --> 00:07:26,000 следващия път, когато совалката се свежда. 125 00:07:26,000 --> 00:07:30,280 >> След като се качи на совалката, ние ще искате за отстраняване на мястото им марка, която 126 00:07:30,280 --> 00:07:32,580 е тяхна снимка в 3D свят. 127 00:07:32,580 --> 00:07:38,030 Ако исках да се премахне място марка р, тогава аз ще получите всички характеристики 128 00:07:38,030 --> 00:07:42,820 от моя Earth, от Google Земя, и след това извадете, че специфично място 129 00:07:42,820 --> 00:07:45,910 марка използвате функцията removeChild. 130 00:07:45,910 --> 00:07:51,360 Тогава най-накрая, нека да премахнете маркера, иконата на 2D картата, за всеки 131 00:07:51,360 --> 00:07:53,650 пътнически, че ние се вдига. 132 00:07:53,650 --> 00:07:59,790 >> За да премахнете маркер m, а след това аз ще Просто изпълни m.setMap нищожна. 133 00:07:59,790 --> 00:08:03,670 Направете това за всички пътници в рамките на обхвата, и сте готови пикап. 134 00:08:03,670 --> 00:08:07,890 Функцията диаграма трябва да покажете всички от пътниците, които са в 135 00:08:07,890 --> 00:08:11,000 транспорт, както и празно място, ако празен. 136 00:08:11,000 --> 00:08:14,420 Така диаграма трябва обхождане shuttle.seats, изписващ 137 00:08:14,420 --> 00:08:21,350 за информиране на пътниците за всеки отделен индекс, и празно място, ако този показател е нула. 138 00:08:21,350 --> 00:08:26,160 >> Сега, ако HTML текст се поставя вътре в JavaScript променлива, след това с помощта 139 00:08:26,160 --> 00:08:31,950 document.getElementById, диаграма консерва редактирате вътрешната HTML на дадената 140 00:08:31,950 --> 00:08:36,140 елемент чрез възлагане на HTML текст към 141 00:08:36,140 --> 00:08:40,840 document.getElementById вътрешната HTML променлива. 142 00:08:40,840 --> 00:08:46,180 Когато потребителите кликнат върху бутона Drop Off в index.html, тя ще се обадя на 143 00:08:46,180 --> 00:08:47,160 на връщане функция. 144 00:08:47,160 --> 00:08:49,510 И това е наша работа да го привеждат в изпълнение. 145 00:08:49,510 --> 00:08:54,150 >> В на връщане, ще искаме да се отстранят всички пътниците от совалката, само ако 146 00:08:54,150 --> 00:08:58,740 ние сме в обхвата на тяхното предназначение, жилищния си къща. 147 00:08:58,740 --> 00:09:03,300 Така че на връщане ще трябва да се провери дали совалката е в обхвата на някоя от 148 00:09:03,300 --> 00:09:08,200 къщи, и се отстранят всички необходими пътниците от совалката. 149 00:09:08,200 --> 00:09:11,020 Е, как да проверим дали сме в обхвата на всички къщи? 150 00:09:11,020 --> 00:09:16,630 Е, все пак, ще се възползват от shuttle.distance функция, която минава през 151 00:09:16,630 --> 00:09:20,990 географската ширина и дължина на точката че ние сме проверка срещу. 152 00:09:20,990 --> 00:09:22,730 >> Но какви са тези точки? 153 00:09:22,730 --> 00:09:27,210 Е, масива къщи, ако си спомняте в houses.js, съхранява 154 00:09:27,210 --> 00:09:32,790 географска ширина и дължина на всяка къща в асоциативен масив, където всеки 155 00:09:32,790 --> 00:09:35,980 индекс е името на тази къща. 156 00:09:35,980 --> 00:09:37,590 След това да се премахне пътници - 157 00:09:37,590 --> 00:09:41,820 добре, само ако сме в обхвата на тяхната къща, която те искат да отидете. 158 00:09:41,820 --> 00:09:46,380 Така че отново, не забравяйте, че пътниците съхранява в къщата, че всеки пътник 159 00:09:46,380 --> 00:09:48,850 иска да отиде. 160 00:09:48,850 --> 00:09:51,670 Ако те са в обсега на тяхната къща, а след това ние ще премахнем че 161 00:09:51,670 --> 00:09:57,200 пътник от shuttle.seats и набор тяхната позиция в масива на нула. 162 00:09:57,200 --> 00:10:00,220 >> Сега нека да поговорим за някои допълнителни функции че може да се прилага в 163 00:10:00,220 --> 00:10:02,690 на CS50 Shuttle р-сет. 164 00:10:02,690 --> 00:10:05,850 Има една точкова система, при която да следите колко 165 00:10:05,850 --> 00:10:07,520 изтъква потребител има. 166 00:10:07,520 --> 00:10:11,120 За отпадане на пътници успешно, те могат да получат точки. 167 00:10:11,120 --> 00:10:15,100 Но се опитвам да свалям пътници където няма никаква къща наблизо, 168 00:10:15,100 --> 00:10:16,980 добре, те могат да се наказват за това. 169 00:10:16,980 --> 00:10:21,790 Така че може би искате да следите точките в глобална променлива. 170 00:10:21,790 --> 00:10:25,970 >> Вие може да реализира може би таймер, където потребителят има определено количество на 171 00:10:25,970 --> 00:10:29,800 време, за да се вдигне и да оставиш на определен брой пътници. 172 00:10:29,800 --> 00:10:33,280 Може би дори се интегрират с точковата система. 173 00:10:33,280 --> 00:10:39,970 Или можете да редактирате таблицата, така че пътници са подредени по къща. 174 00:10:39,970 --> 00:10:45,250 Така че най-вероятно ще бъде един вид функционира до shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Можете да приложат летящ функция, където ако потребителят въвежда на Konami 176 00:10:49,240 --> 00:10:53,460 код, а след това на совалката издига край земята и на совалката може да лети. 177 00:10:53,460 --> 00:10:58,890 Но за безопасно свалям, най-добре да се направи совалката разтовари своя колелата на 178 00:10:58,890 --> 00:11:00,700 земята първа. 179 00:11:00,700 --> 00:11:05,910 Можете също така да приложат телепортация, , където можете да направите падащ списък на 180 00:11:05,910 --> 00:11:08,380 сгради в index.html. 181 00:11:08,380 --> 00:11:12,270 И избор на един от тези, на потребител ще бъдат транспортирани до 182 00:11:12,270 --> 00:11:14,220 тази сграда на територията на колежа. 183 00:11:14,220 --> 00:11:16,760 Добре, все пак, да пътуват през стените на някои 184 00:11:16,760 --> 00:11:19,290 сгради по пътя си там. 185 00:11:19,290 --> 00:11:22,960 >> Можете също да промените скоростта на транспорт, което позволява на потребителя да увеличи 186 00:11:22,960 --> 00:11:25,490 или намаляване на скоростта. 187 00:11:25,490 --> 00:11:28,840 Може би искате глобална променлива да Следете колко гориво 188 00:11:28,840 --> 00:11:31,520 транспорт има, като намалява то като отидеш заедно. 189 00:11:31,520 --> 00:11:35,860 След като удари нула, все пак, на совалката не ще бъде в състояние да се движи освен ако не сте 190 00:11:35,860 --> 00:11:40,610 презарежда, може би с помощта на бутон, или дори и да направи своя собствена бензиностанция. 191 00:11:40,610 --> 00:11:43,240 >> Но това със сигурност не е изчерпателен списък. 192 00:11:43,240 --> 00:11:46,340 Проверете спецификациите за пълния списък, или може би да предложи 193 00:11:46,340 --> 00:11:47,840 собствения си към TF. 194 00:11:47,840 --> 00:11:48,950 Небето е границата. 195 00:11:48,950 --> 00:11:53,110 Това е последният ти CS50 р-комплект, така че да се забавляват с него. 196 00:11:53,110 --> 00:11:56,360 Това беше CS50 Shuttle. 197 00:11:56,360 --> 00:11:59,230 >> Трябва да кажа, че беше удоволствие вземане на тези за вас с 198 00:11:59,230 --> 00:12:00,400 производство екип. 199 00:12:00,400 --> 00:12:04,330 И аз се надявам, че сте ги ползват, както добре. 200 00:12:04,330 --> 00:12:06,040 Моето име е Zamyla. 201 00:12:06,040 --> 00:12:08,310 И това беше CS50. 202 00:12:08,310 --> 00:12:16,363