>> ZAMYLA Чан: Ну, вот мы, последний р-множеством в CS50.
Поздравить себя от необходимости так далеко с момента вашего первого Здравствуйте
Миры и печать Вверх Пирамиды для Марио.
Вы сделали сайт на прошлой неделе.
И мы собираемся делать еще один на этой неделе, который позволяет
ездить вокруг кампуса Гарвардского, выбирая до CS50 сотрудников и
возвращая их к их жилые дома.
>> Теперь, на прошлой неделе мы работали в PHP, сервера язык сторона.
Для этого р-множества, мы становимся введен на JavaScript, который
язык на стороне клиента.
Итак, давайте взглянем на некоторые из Код распределения, который предоставляется
Вы для этого р-множества.
В папке 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.
>> Теперь, я могу также доступ к значениям объектов с использованием
ассоциативная обозначения массива.
Так палочка Базовый индекс, я могу установить что равно единорог, или
проверить, что если мне нужно.
Или я могу использовать оператор точки wand.wood равно вишня, и
так далее и тому подобное.
Итак, вы видите, что ассоциативные массивы и объекты в JavaScript будут
взаимозаменяемы, и воля прийти в очень удобно.
>> Затем мы видим массив зданий в buildings.js,
снова, массив объектов.
Если бы я хотел сделать массив из лучших здания на Гарвардского университетского городка, то
Я хотел бы сделать это следующим образом.
Используя эти обозначения объекта, где Я храню корневой, имя, адрес,
широта, и долгота для каждого один объект строительства.
>> Давайте быстро говорить о переменных в JavaScript.
Как PHP, JavaScript переменные слабо или свободно набрали.
Чтобы создать локальную переменную, Вы предварите имя переменной с V-A-R, вар.
Теперь, в JavaScript, функции будут ограничить область видимости переменных.
Так что если у вас есть локальная переменная в функция, то другие функции
не может получить к нему доступ.
>> Но в отличие от C, петли и условия не ограничения объема переменной.
Так что даже если вы объявляете его внутри состояние, вся функция будет
иметь доступ к нему.
Теперь, не вар, переменная будет носить глобальный характер.
Так что если вы просто объявить имя и присвоить значение, то, что переменная
будет глобальная переменная в JavaScript.
>> Теперь, в домах, у нас есть ассоциативную Массив объектов типа хост, где
каждый дом находится всего в широты и долгота.
Тогда у нас есть пассажиров массив, который является массивом
типа объекта пассажира.
Таким образом, каждый пассажир имеет пользователя имя, имя, и дом.
>> Обратите внимание, что я говорю типа Пассажир, который на самом деле просто означает,
что каждый объект имеет же пар ключ-значение.
Таким образом, каждый объект типа пассажира имеет имя пользователя, имя, и дом.
Так что же нам нужно сделать для р-набора?
Ну, мы должны позволить пользователям выбирать до сотрудников, чтобы показать все
сотрудники, которые в настоящее наш маршрутный автобус, и высадить их.
И тогда мы будем также говорить о дополнительных особенности, которые могут быть реализованы для
Трансфер р-множество.
>> Но давайте поговорим о пикапе в первую очередь.
Лица CS50 персонала была посадили во всем кампусе, где каждый
Лицо реализован как место марки на 3D Земли, и в качестве
маркер на 2D-карте.
Так что, когда пользователь нажимает на Pickup Кнопка, мы хотим добавить неподалеку
пассажиров в маршрутном автобусе.
И мы также хотим, чтобы удалить их место пометить от мира и удалить их
Маркер с карты, указывая, что они в нашем трансферном автобусе сейчас.
>> Так как же нам определить, что пассажиры находится в зоне нашего челнока?
Ну, функция расстояния, так что shuttle.distance, передавая
широта и долгота, рассчитает расстояние от текущей позиции
челнока до того, что Вы определяете с приведенным
широта и долгота.
Таким образом, вы можете использовать это для вычисления Расстояние от маршрутного автобуса, чтобы
пассажиров.
>> Но как вы знаете, где пассажиры?
Ну, вот где мы должны будем редактировать функцию заполнения.
Заполните Places все из сотрудников в пассажиров в мир
и в карте, но не хранить их расположение.
Так что, возможно, вы можете хранить их разместить знаки и маркеры
в некотором глобальном массиве.
>> Теперь уже есть глобальный массив хранения информации от пассажиров.
Пассажиры массива магазины каждый Имя пассажира, и их дом.
Поэтому, возможно, вы можете добавить несколько параметров там пассажирских объектов.
>> Чтобы помочь нам обнаружить все пассажиры в спектр наших
Трансфер, давайте цикл по всем пассажиры в массиве пассажиров.
Для петли в JavaScript может выглядеть что-то вроде этого, очень похож на
те, для петель в С. Или мы можем использовать Альтернатива для структуре петли, для
вар я в массиве, где я все еще будет индекс, но вы не должны
указать array.length состояние, и я + +.
>> Расположение каждого пассажира составляет дается их месте метки.
Но место знак не широта и долгота.
У нас есть доступ к этим параметры, получение геометрию, используя Поиск
геометрии на месте знака, а затем как только мы имеем геометрию, получая
либо широта или долгота с помощью этих функций.
>> Так что теперь мы знаем, как обнаружить ли пассажиры находятся в пределах
Ассортимент нашего шаттла.
Как только мы получим тех пассажиров, мы будем хотите добавить любые пассажиров, которые
в пределах этого диапазона.
Мы хотим, чтобы позволить им прыгать на и принять место на нашем трансферном автобусе, но только
если у нас есть достаточно места для них.
>> Массив shuttle.seats укажет сиденья, являются ли пустыми, или
кто в этом кресле.
Так что, если место пусто, то что место будет нулевым.
Так итерации по массиву мест, проверка на пустые места, хранения
пассажиры в эти места, пока Вы нет никаких более пустые места.
И, к сожалению, никаких других пассажиров придется ждать
в следующий раз шаттл идет вниз.
>> Как только они получат на шаттле, мы хотим удалить их место знак, который
является их фото в 3D-мире.
Если бы я хотел, чтобы удалить место Mark P, то я хотел бы получить все функции,
от моего Земле, от Google Earth, , а затем удалить, что конкретное место
пометить с помощью функции RemoveChild.
Тогда, наконец, давайте уберем маркер, значок на 2D-карте, для любого
пассажир, что мы встают.
>> Чтобы удалить маркер т, то я буду просто выполнить m.setMap нуль.
Делайте это в течение любых пассажиров в пределах диапазона, и вы закончили пикап.
Функциональная схема должна отображать все из пассажиров, которые находятся в вашем
Трансфер и свободное место, если пустыми.
Так график должен перебрать shuttle.seats, отображения
информация о пассажирах для каждого индекса, и свободное место, если, что индекс является недействительным.
>> Теперь, если HTML текст помещается внутри JavaScript переменная, то с помощью
document.getElementById, график может редактировать внутреннюю HTML из, что данный
элемент, назначив HTML текст
document.getElementById внутренняя переменная HTML.
Когда пользователи нажимают кнопку Drop Off в index.html, он позвонит
Функция оставите машину.
И это наша работа, чтобы осуществить это.
>> В Dropoff, мы хотим, чтобы удалить любые пассажиры из шаттла, только если
мы находимся в диапазоне их назначения, их жилой дом.
Так оставите машину придется проверить, является ли трансфер в диапазоне любой из
дома, и удалите все необходимы пассажиры из шаттла.
Так как же мы проверяем, если мы в диапазоне любых домов?
Ну, еще раз, мы будем использовать shuttle.distance функцию, передавая в
широта и долгота точки что мы проверяем против.
>> Но то, что это те точки?
Ну, массив дома, если вы помните, в houses.js, хранит
широта и долгота каждого дома в ассоциативный массив, где каждый
индекс имя этого дома.
Тогда, чтобы удалить пассажиров -
ну, только если мы находимся в диапазоне их Дом, который они хотят пойти.
Итак, еще раз, помните, что пассажиры хранит дом, что каждый пассажир
хочет пойти в.
Если они находятся в пределах диапазона их дом, то мы будем вынуждены удалить, что
пассажир от shuttle.seats и набора их положение в массиве до нуля.
>> Теперь давайте поговорим о некоторых дополнительных функций , которые могут быть реализованы в
CS50 Трансфер р-множество.
Там в балльной системе в результате чего вам отслеживать, сколько
указывает пользователь имеет.
Для высаживая пассажиров успешно, они могут получить очки.
Но за то, чтобы высадить пассажиров где нет никакого дома поблизости,
хорошо, они могут получить наказание за это.
Так что, возможно, вы хотите, чтобы отслеживать точки в глобальной переменной.
>> Вы можете реализовать, возможно, таймер, где пользователь имеет определенное количество
время, чтобы забрать и уходят а, определенное количество пассажиров.
Может быть, даже интегрировать это с системой точки.
Или вы можете редактировать диаграммы таким образом, чтобы пассажиры сортируются по дому.
Так что, вероятно, будет своего рода функционировать в shuttle.seats.
>> Вы можете реализовать летающую функцию, где, если пользователь вводит Konami
Код, то трансфер взлетает земля и трансфер может летать.
Но для безопасной высадки, все возможное, чтобы Трансфер приземлиться свои колеса на
землю в первую очередь.
Вы также можете осуществить телепортацию, где вы сделать выпадающий список
здания в index.html.
И выбрав один из тех,, Пользователь будет транспортироваться в
что строительство на территории кампуса.
В порядке, хотя, путешествовать по стены некоторые
здания по дороге туда.
>> Вы также можете изменить скорость Трансфер, что позволяет пользователю, чтобы увеличить
или уменьшить скорость.
Возможно, вы хотите глобальную переменную в отслеживать, сколько топлива
Трансфер имеет, уменьшая это, как вы идете вперед.
Когда вы доберетесь до нуля, хотя, трансфер не сможет двигаться, если вы не имеете
заправляться, возможно, с помощью кнопки или даже сделать свой собственный АЗС.
>> Но это, конечно, не исчерпывающий список.
Проверьте спецификацию для полного список, или, возможно, предложить
самостоятельно на свой TF.
Небо это предел.
Это твой последний CS50 р-набор, так весело с ним.
Это было CS50 Трансфер.
>> Я должен сказать, это было очень приятно что делает это для вас с
съемочная группа.
И я надеюсь, что вы наслаждаться ими, а также.
Меня зовут Zamyla.
И это было CS50.