[Музыка гуляе] Выступоўца 1: Ну, вось мы, апошні P мноства ў CS50. Павіншаваць сябе ад неабходнасці так далёка, так як ваш першы прывітанне светы і раздрукаваць піраміды для Марыё. Вы зрабілі сайт на мінулым тыдні. І мы збіраемся рабіць яшчэ адзін на гэтым тыдні, які дазваляе ездзіць вакол кампуса Гарвардскага, выбіраючы да CS50 супрацоўнікі і вяртаючы іх да іх жылыя дамы. Зараз на мінулым тыдні мы працавалі ў PHP, сервера мова бок. Для гэтага P набору, мы становімся уведзены на JavaScript, які мову на боку кліента. Такім чынам, давайце зірнем на некаторыя з Код размеркавання, які прадастаўляецца Вы для гэтага P набору. У тэчцы JavaScript, там будзе быць куча файлаў JavaScript. Там у buildings.js, які ўтрымлівае Масіў будынкаў вакол Гарвардзе кампус, з іх інфармацыяй і становішча. Houses.js ўяўляе сабой масіў з Гарварда жылыя дамы, з іх шыраты і даўгаты. Passengers.js ўтрымлівае масіў пасажыраў - супрацоўнікі CS50 - што вы будзеце вярнуць да іх жылых дамоў. Math3D.js, што змяшчае шмат функцыі, каб зрабіць з рухам. Калі вы матэматычна настроеных, то я вітаю вы паглядзіце. Але вы не павінны разумець ўсё там. Shuttle.js, што мае справу з Рух шатла. І index.html з'яўляецца хатняя старонка, дзе усё адбываецца, на самай справе, дзе карыстальнік ўзаемадзейнічае з сайтам. Service.css з'яўляецца ліст CSS стыль, які, у дадатак да Twitter Пачатковай загрузкі бібліятэкі, органы кіравання як index.html выглядае. А потым у нас таксама ёсць service.js, якія ўтрымлівае сэрвісныя функцыі для Трансфер. І вось тое, дзе вы збіраецеся быць запоўніўшы некаторыя ў ДОС. Зараз давайце зірнем на аб'ектах і асацыятыўныя масівы ў JavaScript, які для ўсіх намераў і мэтаў з'яўляюцца ўзаемазаменнымі. Калі б я хацеў зрабіць аб'ект зменную называецца палачка, я б аб'явім яго. І ўнутры гэтых фігурных дужках я б пазначыць ядро ​​аднарог. Драўніна вішні. І даўжыня складае 13. Цяпер я магу таксама доступ да значэнняў аб'ектаў з выкарыстаннем асацыятыўная абазначэння масіва. Так палачка Базавы індэкс, я магу ўсталяваць што роўна аднарог, або пераканайцеся, што, калі мне трэба. Ці я магу выкарыстоўваць аператар кропкі. Жазло кропка драўніны роўная вішня, і гэтак далей, і таму падобнае. Такім чынам, вы бачыце, што асацыятыўныя масівы і аб'екты ў JavaScript будуць ўзаемазаменныя, і воля прыйсці ў вельмі зручна. Затым мы бачым масіў будынкаў у buildings.js. Зноў жа, масіў аб'ектаў. Калі б я хацеў зрабіць масіў з лепшых будынка на Гарвардскага універсітэцкага гарадка, то Я хацеў бы зрабіць гэта наступным чынам. Выкарыстоўваючы гэтыя абазначэння аб'екта, дзе Я захоўваю каранёвай, імя, адрас, шырата, і даўгата для кожнага адзін аб'ект будаўніцтва. Давайце хутка казаць аб зменных у JavaScript. Як PHP, JavaScript зменныя слаба або свабодна набралі. Каб стварыць лакальную зменную, Вы папярэднічаючы імя зменнай з V-A-R, вар. Зараз у JavaScript, функцыі будуць абмежаваць вобласць бачнасці зменных. Так што калі ў вас ёсць лакальная пераменная у функцыя, то іншыя функцыі не можа атрымаць да яго доступ. Але ў адрозненне ад C, завесы і ўмовы не абмежавання аб'ёму зменнай. Так што нават калі вы аб'яўляеце яго ўнутры стан, уся функцыя будзе мець доступ да яго. Цяпер без вар, пераменная будзе насіць глабальны характар. Так што калі вы проста абвясціць імя і прысвоіць значэнне, тое, што пераменная будзе глабальная пераменная у JavaScript. Цяпер у дамах, у нас ёсць асацыятыўную Масіў аб'ектаў тыпу дом, дзе кожны дом знаходзіцца ўсяго ў шыраты і даўгата. Тады ў нас ёсць пасажыраў масіў, які з'яўляецца масівам тыпу аб'екта пасажыра. Такім чынам, кожны пасажыр мае імя карыстальніка, імя, і дом. Звярніце ўвагу, што я бачу тыпу Пасажыр, які на самай справе проста азначае, што кожны аб'ект мае ж значэнне ключа пара. Такім чынам, кожны аб'ект тыпу пасажыра мае імя карыстальніка, імя, і дом. Дык што ж нам трэба зрабіць для P здымачнай пляцоўцы? Ну, мы павінны дазволіць карыстальнікам выбіраць да супрацоўнікаў, каб паказаць усе супрацоўнікі, якія ў цяперашні наш маршрутны аўтобус, і высадзіць іх. І тады мы будзем таксама казаць аб дадатковых асаблівасці, якія могуць быць рэалізаваны для Трансфер P мноства. Але давайце пагаворым пра пікапе ў першую чаргу. Асобы CS50 персаналу была пасадзілі ва ўсім кампусе, дзе кожны Твар рэалізаваны як месца маркі на 3D зямлі, і як маркер на 2D-карце. Так што, калі карыстальнік націскае на пікап Кнопка, мы хочам дадаць непадалёк пасажыраў у маршрутным аўтобусе. І мы таксама хочам, каб выдаліць іх месца пазначыць ад свету, і выдаліць іх Маркер з карты, паказваючы, што яны ў нашым трансферным аўтобусе цяпер. Так як жа нам вызначыць, што пасажыры знаходзіцца ў зоне нашага чоўна? Ну, функцыя адлегласці - так Трансфер адлегласць кропка, перадаючы шырыня і даўжыня, будзе вылічыць адлегласць ад току Становішча трансфер да паказваюць, што вы задаеце з гэтым улічваючы шырыню і даўгату. Такім чынам, вы можаце выкарыстаць гэта для вылічэнні Адлегласць ад маршрутнага аўтобуса, каб пасажыраў. Але як вы ведаеце, дзе пасажыры? Ну, вось дзе мы павінны будзем рэдагаваць функцыю запаўнення. Запоўніце Places ўсё з супрацоўнікаў і пасажыры ў свет, і ў карце, але не захоўваць іх размяшчэнне. Так што, магчыма, вы можаце захоўваць іх размясціць знакі і маркеры у некаторым глабальным масіве. Цяпер ужо ёсць глабальны масіў захоўвання інфармацыі ад пасажыраў. Пасажыры масіва крамы кожны Імя пасажыра, і іх дом. Таму, магчыма, вы можаце дадаць некалькі параметраў там пасажырскіх аб'ектаў. Каб дапамагчы нам выявіць ўсіх пасажыраў ў межах дасяжнасці нашага маршрутнага аўтобуса, давайце цыкл па ўсіх пасажыраў ў масіве пасажыраў. Для завесы ў JavaScript можа выглядаць нешта накшталт гэтага, вельмі падобны на тыя, для завесы ў С. Ці мы можам выкарыстоўваць Альтэрнатыва для структуры цыклу. Для уаг I ў масіве, дзе я ўсё яшчэ будзе індэкс. Але вам не трэба паказваць даўжыня масіва кропка стан, і я плюс плюс. Размяшчэнне кожнага пасажыра складае даецца іх месцы пазнакі. Але месца знак не шырыня і даўжыня. У нас ёсць доступ да гэтых параметры, атрыманне геаметрыю, выкарыстоўваючы Пошук геаметрыі на месцы знака. А потым, калі мы маем геаметрыю, атрыманне альбо шырыню або даўгата, выкарыстоўваючы гэтыя функцыі. Так што цяпер мы ведаем, як выявіць ці пасажыры знаходзяцца ў межах Асартымент нашага шатла. Як толькі мы атрымаем тых пасажыраў, мы будзем хочаце дадаць любыя пасажыраў, якія ў межах гэтага дыяпазону. Мы хочам, каб дазволіць ім скакаць на і заняць месца на нашым трансферным аўтобусе, але толькі калі ў нас ёсць досыць месцы для іх. Масіў трансфер кропка сядзення будзе паказваюць месца, ці з'яўляюцца пустымі, або хто ў гэтым крэсле. Так што, калі месца пуста, то што месца будзе нулявы. Так ітэрацыі па масіве месцаў, праверка на пустыя месцы, захоўвання пасажыры ў гэтыя месцы, пакуль Вы няма ніякіх больш пустыя месцы. І, на жаль, ніякіх іншых пасажыраў прыйдзецца чакаць у наступны раз шатл і пажнеш. Як толькі яны атрымаюць на шатле, мы хочам выдаліць іх месца знак, які з'яўляецца іх фота ў 3D-свеце. Калі б я хацеў, каб выдаліць месца Mark P, то я хацеў бы атрымаць усе функцыі, ад майго зямлі, ад Google Earth, , А затым выдаліць, што канкрэтнае месца пазначыць з дапамогай функцыі RemoveChild. Тады, нарэшце, давайце прыбярэм маркер, значок на карце 2D для любога пасажыр, што мы ўстаюць. Каб выдаліць маркер, т, то я буду проста выканаць м кропка setMap нуль. Рабіце гэта на працягу любых пасажыраў у межах дыяпазону, і вы скончылі пікап.