[Speel van musiek] Spreker 1: Wel, hier is ons, die laaste P stel in CS50. Geluk julle uit met kom so ver sedert jou eerste hallo wêrelde en uit te druk piramides vir Mario. Jy het 'n webwerf het verlede week. En ons gaan te wees om 'n ander een hierdie week, een wat jy kan ry om die Harvard-kampus, pluk up CS50 personeellede en bring hulle terug na hul residensiële huise. Nou verlede week het ons gewerk het in PHP, 'n bediener kant taal. Vir hierdie P stel, is ons om ingestel om JavaScript, wat 'n kliënt kant taal. So laat ons 'n blik op sommige van die verspreiding kode wat voorsien is te jy vir hierdie P stel. In die JavaScript gids, sal daar 'n klomp van die JavaScript-lêers. Daar is buildings.js, wat bevat 'n verskeidenheid van geboue rondom die Harvard kampus, met hul inligting en posisie. Houses.js is 'n verskeidenheid van Harvard residensiële huise, met hul breedte-en lengte. Passengers.js bevat 'n verskeidenheid van passasiers - die CS50 personeel - dat jy sal terug te bring na hul woonhuise. Math3D.js, wat 'n baie bevat funksies te doen het met die beweging. As jy wiskundig aangelê, dan het ek is bly jy neem 'n blik. Maar jy hoef nie te verstaan alles daar in. Shuttle.js, wat handel oor die bus se beweging. En index.html is die tuisblad waar alles gebeur, regtig, waar die gebruiker interaksie met die site. Service.css is die CSS style sheet, wat, benewens die Twitter Skoenlus biblioteek, kontrole hoe index.html lyk. En dan het ons ook service.js, wat bevat diens funksies vir die bus. En hier is waar jy gaan wees vul in sommige van die dos. Nou kom ons neem 'n blik op voorwerpe en assosiatiewe skikkings in JavaScript, wat vir alle praktiese doeleindes is verwissel. As ek wou 'n voorwerp te maak 'n veranderlike genoem 'n muur, sou ek verklaar. En binne-in die krulhakies ek sou spesifiseer die kern is buffel. Die hout is kersie. En die lengte is 13. Nou kan ek ook toegang tot waardes voorwerpe deur assosiatiewe skikking notasie. So muur indeks kern, kan ek wat gelykstaande aan buffel, of seker te maak dat, indien ek nodig het. Of ek kan die dot operateur gebruik. Muur dot hout gelyk kers, en so aan, en so meer. So jy sien dat assosiatiewe skikkings en voorwerpe in JavaScript gaan wees verwissel, en wil kom in baie handig. Toe sien ons 'n verskeidenheid van geboue in buildings.js. Weereens, 'n verskeidenheid van voorwerpe. As ek wou 'n skikking van die beste te maak geboue op Harvard-kampus, dan Ek sou dit as volg maak. Die gebruik van hierdie voorwerp notasie, waar Ek slaan die wortel, naam, adres, breedte en lengte-vir elke enkele gebou voorwerp. Kom ons vinnig praat oor veranderlikes in JavaScript. Soos PHP, JavaScript veranderlikes is swak of losweg getik. 'N plaaslike veranderlike te bou, is prefix die veranderlike naam met die V-A-R, var. Nou in JavaScript, funksies die beperking van die omvang van veranderlikes. So as jy 'n plaaslike veranderlike binne 'n funksie, dan ander funksies kan nie toegang tot dit. Maar in teenstelling met C, loops en voorwaardes nie beperking van die omvang van 'n veranderlike. So selfs as jy dit verkondig binnekant van 'n toestand is, die hele funksie het toegang tot dit. Nou sonder var, die veranderlike globale wees. So as jy net verklaar dat die naam en Gee 'n waarde het, dan die veranderlike sal 'n globale veranderlike in JavaScript. Nou in huise, ons het 'n assosiatiewe verskeidenheid van die huis van die tipe voorwerpe, waar elke huis is net 'n breedte en 'n lengte aan. Dan het ons die passasiers skikking, wat 'n verskeidenheid voorwerp tipe passasier. So elke passasier het 'n rekening het nie, 'n naam en 'n huis. Let daarop dat ek sien van die tipe passasier, wat eintlik maar net beteken dat elke voorwerp het die dieselfde sleutel waarde paar. So elke voorwerp van die tipe passasier het 'n gebruiker se naam, 'n naam en 'n huis. So wat doen ons nodig het om te doen vir die P stel? Wel, moet ons toelaat dat gebruikers te kies up personeellede, al te vertoon die personeel wat tans in ons shuttle, en hulle af te laai. En dan sal ons ook praat oor ekstra eienskappe wat vir geïmplementeer kan word die bus P stel. Maar laat ons praat oor die bakkie eerste. Die gesigte van CS50 personeel is geplant regoor kampus, waar elke gesig is geïmplementeer as 'n plek merk op die 3D aarde, en as 'n merker op die kaart 2D. So wanneer die gebruiker die bakkie druk knoppie, wil ons na die nabygeleë voeg passasiers op die bus. En ons wil ook hul plek te verwyder merk van die wêreld, en verwyder hulle merker op die kaart, wat aandui dat Hulle is in ons pendel nou. So hoe kan ons spoor indien passasiers binne die omvang van ons shuttle? Wel, die funksie afstand - so shuttle dot afstand, verby in die lengte-en breedtegraad, sal bereken die afstand vanaf die huidige posisie van die bus na die wys dat jy spesifiseer met daardie gegee-en breedtelyne. So jy kan dit gebruik om te bereken die afstand van die bus na die passasiers. Maar hoe weet jy waar die passasiers is? Wel, dit is waar ons sal moet wysig die ingestuur funksie. Vul plekke van al die personeel en passasiers in die wêreld, en in die kaart, maar nie slaan hul plek. So miskien kan jy slaan hulle plaas punte en merkers in 'n globale skikking. Nou is daar reeds 'n globale skikking stoor van inligting passasiers. Die passasiers verskeidenheid winkels elke passasier se naam en hul huis. So miskien kan jy 'n paar parameters voeg daar aan die passasier voorwerpe. Om ons te help spoor al die passasiers binne die omvang van ons shuttle, laat loop deur al die passasiers in die passasiers skikking. 'N lus vir in JavaScript kan kyk iets soos hierdie, baie soortgelyk aan dié vir lus in C. Of ons kan gebruik om 'n alternatiewe vir lusstruktuur. Vir var i in skikking, waar ek sal steeds die indeks. Maar jy hoef nie te spesifiseer die skikking dot lengte toestand, en ek plus plus. Elke passasier se plek is gegee deur hul plek merk. Maar die plek merk is nie die breedte en die lengte aan. Ons het daardie parameters om toegang te verkry deur om die meetkunde, met behulp van get meetkunde op die plek merk. En dan as ons die meetkunde, om óf die lengte of die die lengte, met behulp van die funksies. So nou weet ons hoe om op te spoor of passasiers is binne omvang van ons pendel. Sodra ons daardie passasiers, sal ons wil enige passasiers wat by te voeg binne daardie reeks. Ons wil hulle toelaat om te hop, en neem 'n sitplek op ons shuttle, maar slegs As ons genoeg ruimte vir hulle. Die pendeltuig dot sitplekke skikking aandui of sitplekke is leeg, of wat is in daardie stoel. So as 'n stoel is leeg, dan daardie setel sal nul wees. So Itereer oor die sitplekke skikking, nagaan vir leë sitplekke, stoor passasiers in die sitplekke totdat jy het geen meer leë sitplekke. En ongelukkig, enige ander passasiers sal moet wag vir die volgende keer op die bus kom rond. Sodra hulle kry op die bus, sal ons wil hul plek punt te verwyder, wat is hul foto in die 3D-wêreld. As ek wou 'n plek merk p te verwyder, dan sou ek al die eienskappe kry van my aarde, van die Google Earth, en dan verwyder daardie spesifieke plek merk met behulp van die removeChild funksie. Dan laastens, laat ons verwyder die merker, die ikoon op die 2D kaart vir enige passasier wat ons optel. 'N merker, m te verwyder, dan sal ek net voer m dot setMap null. Doen dit vir enige passasiers wat binne die omvang, en jy het die bakkie klaar.