1 00:00:00,000 --> 00:00:00,988 2 00:00:00,988 --> 00:00:09,880 >> [За възпроизвеждане на музика] 3 00:00:09,880 --> 00:00:13,360 >> SPEAKER 1: Е, ние сме тук, последната P сет в CS50. 4 00:00:13,360 --> 00:00:17,040 Поздравете себе си от като дойде досега, тъй като вашата първа здравей 5 00:00:17,040 --> 00:00:20,090 светове и отпечатване пирамиди за Марио. 6 00:00:20,090 --> 00:00:21,930 Ти направи един сайт миналата седмица. 7 00:00:21,930 --> 00:00:25,110 И ние ще трябва да се направи още една тази седмица, този, който ви позволява да 8 00:00:25,110 --> 00:00:28,570 карам из кампуса на Харвард, бране до членовете CS50 служители, както и 9 00:00:28,570 --> 00:00:31,910 връщането им до тяхното жилищни сгради. 10 00:00:31,910 --> 00:00:35,400 >> Сега миналата седмица работихме в PHP, една страна на сървъра език. 11 00:00:35,400 --> 00:00:38,250 За тази P набор, Ние ще се въведе за JavaScript, който е 12 00:00:38,250 --> 00:00:40,600 клиент език страна. 13 00:00:40,600 --> 00:00:44,010 Така че нека да разгледаме някои от най- разпространение на кодове, което е условие за 14 00:00:44,010 --> 00:00:46,210 ти за това P набор. 15 00:00:46,210 --> 00:00:49,700 >> В папката JavaScript, там ще да бъде един куп JavaScript файлове. 16 00:00:49,700 --> 00:00:53,600 Има buildings.js, който съдържа масив на сградите около Harvard 17 00:00:53,600 --> 00:00:57,340 колежа, с тяхната информация и позиция. 18 00:00:57,340 --> 00:01:01,630 Houses.js е масив от Харвард жилищни сгради, с техните 19 00:01:01,630 --> 00:01:04,030 ширини и дължини. 20 00:01:04,030 --> 00:01:07,020 Passengers.js съдържа масив на пътници - 21 00:01:07,020 --> 00:01:08,600 Членовете на персонала - CS50 22 00:01:08,600 --> 00:01:11,640 , че ще се върне обратно, за да техните жилищни къщи. 23 00:01:11,640 --> 00:01:16,450 >> Math3D.js, че съдържа много функции, за да правите с движението. 24 00:01:16,450 --> 00:01:19,500 Ако сте математически ум, След това аз приветствам ви да погледнете. 25 00:01:19,500 --> 00:01:23,530 Но не е нужно да се разбере всичко там. 26 00:01:23,530 --> 00:01:26,710 Shuttle.js, която се занимава с движение на совалката. 27 00:01:26,710 --> 00:01:31,450 И index.html е началната страница, където всичко се случва, наистина, когато 28 00:01:31,450 --> 00:01:33,610 потребител взаимодейства с обекта. 29 00:01:33,610 --> 00:01:39,110 >> Service.css е CSS стил лист, които, в допълнение към Twitter 30 00:01:39,110 --> 00:01:43,960 Bootstrap библиотека, контроли как index.html изглежда. 31 00:01:43,960 --> 00:01:48,190 И тогава ние също имаме service.js, които съдържа обслужващи функции за 32 00:01:48,190 --> 00:01:49,010 совалката. 33 00:01:49,010 --> 00:01:53,010 И тук е мястото, където отиваш, за да бъде попълване на някои от към DOS. 34 00:01:53,010 --> 00:01:56,600 >> Сега нека да разгледаме най-обекти и асоциативни масиви в JavaScript, 35 00:01:56,600 --> 00:01:59,360 което за всички намерения и цели са взаимозаменяеми. 36 00:01:59,360 --> 00:02:03,030 Ако исках да направя един обект променлива наречена пръчка, бих 37 00:02:03,030 --> 00:02:04,290 го декларира. 38 00:02:04,290 --> 00:02:08,789 А вътре в тези фигурни скоби бих укажете на ядрото е еднорог. 39 00:02:08,789 --> 00:02:10,220 Дървесината е череша. 40 00:02:10,220 --> 00:02:12,710 И дължината е 13. 41 00:02:12,710 --> 00:02:16,370 >> Сега мога да получите достъп до стойности на обекти, използващи 42 00:02:16,370 --> 00:02:18,270 асоциативен масив нотация. 43 00:02:18,270 --> 00:02:22,610 Така пръчка ядро ​​форум, не мога да определя че равно на еднорог, или 44 00:02:22,610 --> 00:02:24,710 покажат, че ако имам нужда. 45 00:02:24,710 --> 00:02:26,510 Или мога да използвам оператор точка. 46 00:02:26,510 --> 00:02:30,280 Wand точка дървесина се равнява на череша, и така нататък, и така нататък. 47 00:02:30,280 --> 00:02:33,930 Така че виждате, че асоциативни масиви и обекти в JavaScript ще бъде 48 00:02:33,930 --> 00:02:37,720 взаимозаменяеми, и воля дойде в доста по-удобен. 49 00:02:37,720 --> 00:02:41,570 >> След това ние виждаме множество сгради в buildings.js. 50 00:02:41,570 --> 00:02:43,870 Отново, множество обекти. 51 00:02:43,870 --> 00:02:48,500 Ако исках да се направи масив от най-добрите сгради на университета Харвард, а след това 52 00:02:48,500 --> 00:02:49,710 Бих го направите по следния начин. 53 00:02:49,710 --> 00:02:55,250 Използването на този обект нотация, където I съхранявайте корен, име, адрес, 54 00:02:55,250 --> 00:03:00,260 ширина и дължина за всяка една сграда обект. 55 00:03:00,260 --> 00:03:02,930 >> Нека най-бързо се говори за променливи в JavaScript. 56 00:03:02,930 --> 00:03:07,760 Подобно на PHP, JavaScript променливи са слабо или хлабаво написали. 57 00:03:07,760 --> 00:03:14,120 За да се създаде локална променлива, можете префикс името на променливата с V-A-R, VaR. 58 00:03:14,120 --> 00:03:17,010 >> Сега в JavaScript, функции ще ограничи обхвата на променливи. 59 00:03:17,010 --> 00:03:20,600 Така че, ако имате локална променлива в рамките на функция, след други функции 60 00:03:20,600 --> 00:03:22,060 Не мога да получите достъп до нея. 61 00:03:22,060 --> 00:03:26,090 Но за разлика от C, вериги и условия не ограничи обхвата на променливата. 62 00:03:26,090 --> 00:03:30,600 >> Така че дори и да го декларира в рамките на състояние, цялата функция ще 63 00:03:30,600 --> 00:03:32,810 имат достъп до нея. 64 00:03:32,810 --> 00:03:35,820 Сега без VAR, променливата ще бъде глобална. 65 00:03:35,820 --> 00:03:39,170 Така че, ако просто да обяви името и присвоите стойност, а след това тази променлива 66 00:03:39,170 --> 00:03:41,900 ще бъде глобална променлива в JavaScript. 67 00:03:41,900 --> 00:03:48,480 >> Сега в къщи, ние имаме асоциативен масив от тип къща обекти, където 68 00:03:48,480 --> 00:03:52,100 всяка къща е само на ширина и дължина. 69 00:03:52,100 --> 00:03:55,140 Тогава ние имаме пътниците масив, който е масив 70 00:03:55,140 --> 00:03:57,370 на тип обект пътник. 71 00:03:57,370 --> 00:04:01,620 Така че всеки пътник има потребителско име, име, и една къща. 72 00:04:01,620 --> 00:04:04,840 Забележете, че аз виждам от тип пътници, които наистина просто означава, 73 00:04:04,840 --> 00:04:08,150 че всеки обект има една и съща двойка ключове стойност. 74 00:04:08,150 --> 00:04:12,830 Така че всеки обект от тип пътник има потребителско име, име, и една къща. 75 00:04:12,830 --> 00:04:14,850 >> Така че това, което ни е нужно, за да направи за множеството P? 76 00:04:14,850 --> 00:04:20,779 Е, ние трябва да позволим на потребителите да избират до членовете на персонала, за да покажете всички 77 00:04:20,779 --> 00:04:25,090 Членовете на персонала, които са в момента в нашия транспорт, както и да ги оставиш. 78 00:04:25,090 --> 00:04:29,280 И тогава ние ще говорим и за допълнително функции, които могат да бъдат приложени за 79 00:04:29,280 --> 00:04:30,980 совалката P сет. 80 00:04:30,980 --> 00:04:33,610 >> Но нека да говорим за пикапа първо. 81 00:04:33,610 --> 00:04:37,480 Лицата на CS50 служители са били засадени целия кампус, където всеки 82 00:04:37,480 --> 00:04:41,750 Лицето се изпълнява като място марка на 3D земята, и като 83 00:04:41,750 --> 00:04:44,030 маркер на карта 2D. 84 00:04:44,030 --> 00:04:47,880 Така че, когато потребителят кликне върху пикапа бутон, искаме да добавим близката 85 00:04:47,880 --> 00:04:49,590 пътници на совалката. 86 00:04:49,590 --> 00:04:53,650 И ние също искаме да се премахне тяхното място марки от света, както и премахване на тяхната 87 00:04:53,650 --> 00:04:58,060 маркер от картата, което показва, че те са в нашата совалка сега. 88 00:04:58,060 --> 00:05:02,520 >> И как ще се открие, ако пътниците сте в обсега на нашата совалка? 89 00:05:02,520 --> 00:05:04,610 Е, разстоянието функция - 90 00:05:04,610 --> 00:05:08,770 така трансфер разстояние точка, минавайки през географската ширина и дължина, ще 91 00:05:08,770 --> 00:05:12,030 изчисляване на разстоянието от ток позиция на транспорт до 92 00:05:12,030 --> 00:05:15,850 отбележа, че вие ​​определяте с това дадена географска ширина и дължина. 93 00:05:15,850 --> 00:05:19,180 Така че можете да използвате това, за да се изчисли разстояние от транспорт до 94 00:05:19,180 --> 00:05:20,310 пътници. 95 00:05:20,310 --> 00:05:24,040 >> Но как да знам къде пътниците са? 96 00:05:24,040 --> 00:05:27,510 Е, това е, когато ние ще трябва да редактирате функцията попълвам. 97 00:05:27,510 --> 00:05:32,500 Запълни места на всички членове на персонала и пътниците в света, 98 00:05:32,500 --> 00:05:36,300 и в картата, но не съхранява тяхното местоположение. 99 00:05:36,300 --> 00:05:39,850 Така че може би ще може да съхранява своята поставите марка и маркери 100 00:05:39,850 --> 00:05:41,570 в някои глобалния масив. 101 00:05:41,570 --> 00:05:45,780 >> Сега вече е глобален масив съхранение на информацията от страна на пътниците. 102 00:05:45,780 --> 00:05:49,960 Съхранява пътници масиви всеки име на пътника и техния дом. 103 00:05:49,960 --> 00:05:54,985 Така че може би можете да добавите няколко параметъра там, за да пътнически обекти. 104 00:05:54,985 --> 00:05:59,290 >> За да ни помогне да се открият всички пътници в обсега на нашия транспорт, да 105 00:05:59,290 --> 00:06:02,500 цикъл през всички пътници в масива пътници. 106 00:06:02,500 --> 00:06:07,790 А за линия в JavaScript може да изглежда нещо като това, много подобен на 107 00:06:07,790 --> 00:06:12,910 тези за линия в C. Или можем да използваме един алтернатива за контур структура. 108 00:06:12,910 --> 00:06:17,130 >> За VAR аз в масив, където I все още ще бъде на индекса. 109 00:06:17,130 --> 00:06:20,740 Но не е нужно да се уточни Дължината на масива точка 110 00:06:20,740 --> 00:06:23,310 състояние, и аз плюс плюс. 111 00:06:23,310 --> 00:06:26,140 Местоположение Всеки пътник е дадена от тяхно място марка. 112 00:06:26,140 --> 00:06:29,800 >> Но марката място не е географска ширина и дължина. 113 00:06:29,800 --> 00:06:34,575 Ние имаме достъп до тези параметри от получаване на геометрията, използвайки GET 114 00:06:34,575 --> 00:06:35,900 геометрията на марката място. 115 00:06:35,900 --> 00:06:39,630 И тогава, след като имаме геометрията, получаване или географската ширина или 116 00:06:39,630 --> 00:06:42,600 дължина, като се използват тези функции. 117 00:06:42,600 --> 00:06:45,680 >> Така че сега ние знаем как да се открие дали пътниците са в рамките на 118 00:06:45,680 --> 00:06:47,920 Обхватът на нашата совалка. 119 00:06:47,920 --> 00:06:52,050 След като имаме тези пътници, ние ще искате да добавите и всички пътници, които са 120 00:06:52,050 --> 00:06:53,140 в рамките на този диапазон. 121 00:06:53,140 --> 00:06:57,580 Искаме да им позволи да прескачате, и седнете на нашия транспорт, но само 122 00:06:57,580 --> 00:06:59,640 ако имаме достатъчно място за тях. 123 00:06:59,640 --> 00:07:04,120 >> Масивът транспорт дот места ще посочи дали седалките са празни, или 124 00:07:04,120 --> 00:07:05,890 кой е на това място. 125 00:07:05,890 --> 00:07:11,170 Така че, ако дадена седалка е празна, а след това това място ще бъде нула. 126 00:07:11,170 --> 00:07:15,930 Така че обхождане на масива места, проверка за празни места, съхраняване 127 00:07:15,930 --> 00:07:20,020 пътниците в тези места, докато не нямат никакви по-празни места. 128 00:07:20,020 --> 00:07:23,330 И за съжаление, всички други пътници ще трябва да се изчака 129 00:07:23,330 --> 00:07:26,000 следващия път, когато совалката се обадило. 130 00:07:26,000 --> 00:07:30,280 >> След като се качи на совалката, ние ще искате за отстраняване на мястото им марка, която 131 00:07:30,280 --> 00:07:32,540 е тяхна снимка в 3D свят. 132 00:07:32,540 --> 00:07:38,030 Ако исках да се премахне място марка р, тогава аз ще получите всички характеристики 133 00:07:38,030 --> 00:07:42,790 от моята земя, от Google Земя, и след това извадете, че специфично място 134 00:07:42,790 --> 00:07:45,910 марка използвате функцията removeChild. 135 00:07:45,910 --> 00:07:51,360 Тогава най-накрая, нека да премахнете маркера, иконата на картата 2D за всеки 136 00:07:51,360 --> 00:07:53,650 пътнически, че ние се вдига. 137 00:07:53,650 --> 00:07:59,790 За да премахнете маркер, m, тогава ще Просто изпълни m точка setMap нищожна. 138 00:07:59,790 --> 00:08:02,920 Направете това за всички пътници в рамките на обхвата, и сте готови пикап. 139 00:08:02,920 --> 00:08:05,056