ZAMYLA CHAN: Па, тука сме, последните стр поставени во CS50. Честитам себе од тоа да имаат дојде толку далеку, бидејќи вашиот прв Здраво Светови и печатење до Пирамиди за Марио. Сте го направиле веб-сајт минатата недела. И ние ќе треба да се прави уште еден оваа недела, оној кој ви овозможува да се вози наоколу во кампусот на Харвард, подигање до CS50 членови на персоналот и се зближуваа назад кон нивните станбени куќи. Сега, минатата недела работевме во PHP, на серверот јазик. За оваа п-сет, ние сме добивање воведе да JavaScript, што е клиентската страна, јазик. Па ајде да ги разгледаме во некои од дистрибуција код кој е предвидено да вас за ова, p-сет. Во вклучите Javascript-папка, ќе има биде еден куп на JavaScript датотеки. Има buildings.js, која содржи низа на згради околу Харвард кампусот со нивните информации и позиција. Houses.js е низа од Харвард станбени куќи со нивните ширини и должини. Passengers.js содржи низа на патници, CS50 членови на персоналот дека ќе се носат назад кон нивните станбени куќи. Math3D.js, која содржи многу функции да се направи со движењето. Ако сте математички ум, тогаш Го поздравувам вас да ги разгледаме. Но, вие не треба да се разбере се таму. Shuttle.js, која се занимава со движење на шатлот. И index.html е почетната страница, каде сè се случува, навистина, каде што корисникот е во интеракција со сајт. Service.css е CSS стилот на состојба, кој во прилог на Твитер Bootstrap библиотека, контроли како index.html изгледа. А потоа ние исто така имаат service.js, која содржи услужни функции за на шатлот. И тука е местото каде што можете да одиш за да пополнување на некои од to-do е. Сега ајде да ги разгледаме во објекти и асоцијативни низи во JavaScript, кои, за сите намерите и целите, се еквивалентни. Ако сакав да направите објект променлива наречен стапче, јас би ја прогласи. И во оние големи загради, јас би наведете, јадрото е еднорог, дрво е цреша, и должината е 13. Сега, јас исто така да пристапите вредности на објекти користење асоцијативна низа нотација. Па стапче индекс јадро, можам да го поставите дека еднаква на еднорог, или проверете дали ми треба. Или јас да го користите оператор точка wand.wood еднаква на цреша, и така натаму и така натаму. Па ќе видите дека асоцијативни низи и објекти во вклучите Javascript-се случува да бидат меѓусебно, и волја доаѓаат во прилично корисна. Тогаш можеме да видиме низа на згради во buildings.js, повторно, низа од објекти. Ако сакав да се направи низа од најдобрите објекти на кампусот на Харвард, а потоа Јас ќе го направи тоа како што следува. Со користење на овој објект нотација, каде Јас чување на корен, име, адреса, ширина, и должина за секоја една зграда објект. Ајде брзо се зборува за варијабли во JavaScript. Како PHP, JavaScript променливи се слабо или лабаво отчукува. Да се ​​создаде локална променлива, можете префикс променлива името со V-A-R, var. Сега, во вклучите Javascript, функции ќе ограничи обемот на променливи. Значи, ако имате локална променлива во функција, а потоа другите функции не може да дојде до неа. Но, за разлика Ц, јамки и услови не ограничи обемот на променливата. Па дури и ако тоа прогласи внатрешноста на состојба, целата функција ќе имаат пристап до неа. Сега, без var, променливата ќе бидат глобални. Значи, ако сте само го прогласи име и доделите вредност, тогаш таа променлива ќе биде глобалната променлива во JavaScript. Сега, во куќи, имаме асоцијативна низа на домаќин тип објекти, каде што секоја куќа е само географска ширина и должина. Тогаш имаме патници низа, која е низа на објектот тип патник. Така што секој патник има корисникот име, име, и куќа. Забележите дека сакам да кажам дека на типот патници, кои, навистина, само значи дека секој објект има исто клучните вредност парови. Така што секој објект од тип патникот има корисничко име, име, и куќа. Значи она што ние треба да се направи за p-сет? Па, ние треба да им овозможи на корисниците да ги собереш до членовите на персоналот, да се прикаже и сите членови на персоналот кои се моментално во нашите шатл, и да ги заспивам. А потоа ние, исто така, ќе зборуваме за дополнителни карактеристики кои може да се спроведе за на шатлот п-сет. Но, ајде да зборуваме за пикап во прв план. Лицата на CS50 кадар се засадени низ целиот кампус, каде што секој лице се спроведува како место марка на 3D земјата, и како маркер на картата 2D. Па кога корисникот ќе кликне на прифат копчето, ние сакаме да го додадете во близина патници до шатлот. И ние исто така сакаме да се отстрани нивното место Марк од светот и ги отстрани нивните маркер од мапата, што покажува дека тие се во нашата шатл сега. Така како ние да се открие ако патници се во рамките на опсегот на нашите шатл? Па, функцијата далечина, така shuttle.distance, минувајќи во географска ширина и должина, ќе ја пресмета растојанието од моменталната позиција на шатлот до тој степен што ќе се определи со она што географска ширина и должина. Па можете да го користите овој да се пресмета оддалеченост од шатл до патници. Но како да знам каде патниците се? Па, тоа е каде што ќе треба да се уредување на населуваат функција. Доверат места сите на членови на персоналот на патници во светот и во мапата, но не го прави складирање на нивната локација. Па можеби ќе може да се сместат нивните место марки и маркери во некои глобалната низа. Сега, постои веќе е глобален низа складирање на информации од патниците. Патниците низа продавници секоја име на патници и нивната куќа. Па можеби можете да додадете неколку параметри има на патникот објекти. Да ни помогне да детектира сите патници во рамките на опсегот на нашите шатл, јамка ајде низ сите патници во патници низа. А за телефонска линија во JavaScript може да изгледа нешто како ова, многу слична на оние за петелки во C. Или може да се користат алтернатива за јамка структура, за var i во низа, каде што јас се уште ќе биде индекс, но вие не треба да се наведете array.length состојба и i + +. Локација секој патник е дадена од страна на нивното место марка. Но местото знак не е географска ширина и должина. Имаме пристап до оние параметри од добивање на геометријата, со користење добие геометријата на местото марка, а потоа еднаш имаме геометријата, добивање или географска ширина или должина користење на овие функции. Така, сега знаете како да се открие дали патници се во рамките на Опсегот на нашата шатл. Откако ќе имаат оние патници, ние ќе сакате да го додадете патници кои се во рамките на тој опсег. Ние сакаме да им се дозволи да хоп на и да ги преземат место во нашата шатл, но само ако имаме доволно простор за нив. На shuttle.seats низа ќе се покаже дали седишта се празни, или кој е во тоа место. Значи, ако седиштето е празен, тогаш дека седиштето ќе биде нула. Па iterate во текот на седишта низа, проверка за празни места, чување патници во оние места додека не немаат повеќе празни места. И, за жал, било другите патници ќе мора да почека за Следниот пат кога шатлот се сведува. Откако тие се на шатлот ќе сакаме за да го отстраните место марка, која е нивната слика во 3D свет. Ако сакав да се отстрани место марка p, тогаш јас би ги добиете сите од карактеристиките од мојата земја, од Google Earth, а потоа ја отстрани таа одредено место означи со користење на removeChild функција. Тогаш на крај, ајде да се отстрани маркер, иконата на мапата 2D, за било патнички дека ние сме подигање. Да се ​​отстрани маркер m, а потоа јас ќе само извршување m.setMap нула. Дали ова за сите патници во Вашиот опсег, и ќе завршите со пикап. На табелата функција треба да ги прикажува сите на патниците кои се во вашиот шатл, и празни седишта ако празна. Па табелата треба да iterate преку shuttle.seats, прикажување на патнички информации за секој индекс, и празни седишта ако тој индекс е нула. Сега, ако HTML текстот е ставен во внатрешноста на Го вклучите Javascript-променлива, тогаш со користење на document.getElementByID, графика може да уредување на внатрешниот HTML кодот на што им беше дадена елемент со доделување на HTML текстот на document.getElementByID внатрешниот HTML променлива. Кога корисниците кликнете на копчето заспивам во index.html, тоа ќе викнам dropoff функција. И тоа е нашата работа да се спроведе тоа. Во dropoff, ние ќе сакате да ги отстраните сите патниците од шатлот само ако ние сме во опсег на нивната дестинација, нивните станбени куќа. Па dropoff ќе треба да се провери дали на трансфер е во опсег од било кој од куќи, и да ги отстраните сите потребни патниците од шатлот. Така како ние да проверите дали сме во опсег од ниту куќи? Па, уште еднаш, ние ќе се направи употреба на shuttle.distance функција, поминува во географската ширина и должина на точката дека ние сме проверка против. Но, она што се оние точки? Па, куќи низа, ако се сеќавате во houses.js, продавници географска ширина и должина на секоја куќа во асоцијативна низа, каде што секој индекс е името на таа куќа. Тогаш да се отстрани патници - добро, само ако ние сме во опсегот на нивните куќа која тие сакаат да одат. Значи, повторно, се сеќавам дека патниците продавници куќата, која секој патник сака да оди на. Ако тие се во рамките на опсегот на нивните куќа, тогаш ние ќе ја отстрани таа патник од shuttle.seats и сет нивната позиција во низа за да се ништовни. Сега ајде да зборуваме за некои дополнителни функции кои можат да бидат имплементирани во на CS50 шатлот п-сет. Има систем на поени при што да ги пратите на тоа колку укажува корисникот има. За отпадане патници успешно, тие можат да добијат поени. Но, за се обидува да заспивам патници каде не постои куќа во близина, добро, тие може да се казнети за тоа. Па можеби ќе сакате да ги пратите на поени во една глобална променлива. Може да се спроведе можеби тајмер, каде корисникот има одредена количина на време да ги собереш и заспивам на одреден број на патници. Можеби дури и се интегрираат овој со точка систем. Или можете да ги менувате Шема, како што патници се подредени по куќа. Така што, најверојатно, ќе биде еден вид функција да shuttle.seats. Може да се спроведе летање функција, каде што, ако на корисникот влезови на Konami код, тогаш шатлот полета на земјата и шатл можат да летаат. Но за безбедно заспивам, најдобро е да се направи шатлот слета неговите тркала на земјата во прв план. Можете исто така да се спроведе телепортација, каде ќе се направи паѓачкото мени на згради во index.html. И избирање на една од оние, корисникот ќе се транспортира до дека изградбата на кампусот. Добро, сепак, да патуваат низ ѕидовите на некои зградите на вашиот пат таму. Исто така можете да ја смените брзината на шатл, му овозможува на корисникот да се зголеми или намалите брзината. Можеби сакате глобална променлива да ги пратите на тоа колку гориво шатл има, намалување како што одиме понатаму. Откако ќе кликнете на нула, иако, на шатлот не ќе можат да се движат освен ако немате гориво, можеби со помош на копчето или дури и направете ја вашата сопствена бензинска пумпа. Но тоа сигурно не е една исцрпна листа. Проверете на спецификации за целосна листата, или можеби да предложи свој на вашиот ТФ. Небото е граница. Ова е твојата последна CS50 п-сет, па се забавуваат со тоа. Ова беше CS50 шатлот. Морам да кажам, тоа беше задоволство што овие за вас со Продуцентскиот тим. И јас се надевам дека сте уживајте во нив, како и. Моето име е Zamyla. И тоа беше CS50.