[MUZIKO Ludanta] SPEAKER 1: Nu, jen ni, la lastaj P eki CS50. Gratulas vin de devi veni ĝis nun ekde via unua saluton mondoj kaj presi ekstere piramidojn por Mario. Vi faris retejon pasintsemajne. Kaj ni tuj devas fari alian tiun semajnon, kiu permesas al vi drive ĉirkaŭ la Harvard kampuso, pluki supren CS50 stabanojn kaj portante ilin al iliaj residenciales domoj. Nun pasintsemajne ni laboris en PHP, servanto flanko lingvo. Por ĉi P aro, ni ekuzi enkondukis al JavaScript, kiu estas kliento flanko lingvo. Do ni rigardu kelkajn el la dissendo kodo kiu estas provizita al vi pro tiu P aro. En la Javascript dosierujo, okazos esti faskon da JavaScript-dosierojn. Ekzistas buildings.js, kiu enhavas tabelo de konstruaĵoj ĉirkaŭ Harvard kampuso, kun iliaj informoj kaj pozicio. Houses.js estas tabelo de Harvard residenciales domoj, kun ilia latitudoj kaj longitudoj. Passengers.js enhavas tabelo de pasaĝeroj - la CS50 stabanojn - ke vi estos revenigo al iliaj domoj residenciales. Math3D.js, kiu enhavas multajn funkcioj por fari kun la movado. Se vi estas matematike intencis, tiam Mi bonvenigas vin rigardu. Sed vi ne bezonas kompreni ĉio en ekzistas. Shuttle.js, kiu traktas la pramo movado. Kaj index.html estas la hejmpaĝo kie ĉio okazas, vere, kie la uzanto interagas kun la ejo. Service.css estas la CSS-stilon folion, kiuj, krom la Twitter Bootstrap biblioteko, komandoj kiom index.html rigardojn. Kaj tiam ni havas ankaŭ service.js, kiuj enhavas servo funkcioj por la pramo. Kaj ĉi tie estas kie vi estas iranta esti enspacanta en kelkaj el la al dos. Nun ni rigardu celoj kaj asocieca arrays en JavaScript, kiu por iuj celoj estas interŝanĝeblaj. Se mi volis fari objekton variablo nomata kiel sceptron, mi estus deklari ĝin. Kaj ene de tiuj buklaj krampoj mi farus specifi la kerno estas bubalo. La ligno estas ĉerizo. Kaj gxia longo estas 13. Nun mi povas ankaŭ aliri valoroj de objektoj uzante asocieca tabelo skribmaniero. Do sceptron indekso kerno, mi povas agordi ke egalas unukornulo, aŭ kontroli, ke, se mi bezonas. Aŭ mi povas uzi la skalara operatoro. Sceptro dot ligno egalas ĉerizo, kaj tiel plu, kaj tiel plu. Do vi vidas, ke asociaj tabeloj kaj objektoj en JavaScript tuj estos interŝanĝeblaj, kaj volo veni en tute oportuna. Poste ni vidos tabelo de konstruaĵoj en buildings.js. Denove, tabelo de objektoj. Se mi volis fari tabelo de la plej bonaj konstruaĵoj en Harvard universitato, tiam Mi farus ĝin kiel sekvas. Uzante ĉi objekto skribmaniero, kie Mi stoki la radiko, nomo, adreso, latitudo kaj longitudo por ĉiu sola konstruaĵo objekto. Ni rapide paroli pri variabloj en JavaScript. Kiel PHP, JavaScript variabloj estas malforte aŭ lakse tajpita. Krei lokan variablon, vi prefikso la nomo de la variablo kun la V-A-R, var. Nun en JavaScript, funkcioj volo limigi la atingon de variabloj. Do se vi havas lokan variablon ene funkcio, tiam aliaj funkcioj ne povas aliri gxin. Sed kontraste C, maŝojn kaj kondiĉoj ne limigi la atingon de variablo. Do eĉ se vi divenos gxin interne de kondiĉo, la tuta funkcio havas aliron al gxi. Nun sen var, la variablo estos tutmonda. Do, se vi simple deklarus la nomon kaj atribui valoron, do, ke variablo Estos globala variablo en JavaScript. Nun en domoj, ni havas asocieca tabelo de domo tipo celoj, kie cxiu domo estas nur latitudo kaj longitudo. Tiam ni havas la pasaĝeroj tabelo, kiu estas tabelo de objekto tipo pasaĝero. Do ĉiu pasaĝero havas salutnomon, nomon kaj regxan domon. Rimarku, ke mi vidas de tipo pasaĝero, kiu vere simple signifas ke ĉiu objekto havas la sama klavo valoro paron. Do ĉiu objekto de tipo pasaĝero havas nomo de uzanto, nomo, kaj domon. Do kion ni bezonas faru por la P aro? Nu, ni bezonas por permesi al la uzantoj pick supren stabanojn montri ĉiujn la stabanojn, kiuj estas nuntempe en nia pramo, kaj por faligi ilin. Kaj tiam ni devos ankaŭ paroli pri ekstra trajtoj kiuj povas esti efektivigita por la pramo P aro. Sed ni parolu pri briketoj unue. La vizaĝoj de CS50 personaro estis plantita ĉie kampuso, kie ĉiu vizaĝo implementado kiel loko markon pri la 3D tero, kaj kiel markilo en la 2D mapo. Do kiam la uzanto alklakas la briketo butono, ni volas aldoni proksima pasaĝeroj al la pramo. Kaj ni ankaŭ volas forigi ilian lokon marki el la mondo, kaj forigu ilian markilo de la mapo, indikante ke ili estas en nia pramo nun. Do kiel fari ni detekti se pasaĝeroj estas la atingo de nia pramo? Nu, la funkcio distanco - tiel pramo dot distanco, pasante en la latitudo kaj longitudo, volo kalkuli la distancon de la aktuala pozicio de la pramo al la noti ke vi specifas kun tiu donita latitudo kaj longitudo. Do vi povas uzi tion por kalkuli la distanco de la pramo al la pasaĝeroj. Sed kiel vi scias kie la pasaĝeroj estas? Nu, tio estas kie ni devos redaktu la popoli funkcio. Popoli lokoj ĉiuj stabanojn kaj pasaĝerojn en la mondo, kaj en la mapo, sed ne stoki ilia situo. Do eble vi povas stoki iliaj meti kadroj kaj markiloj en iu tutmonda tabelo. Nun jam estas tutmonda tabelo stokante informoj el pasaĝeroj. La pasaĝeroj tabelo tendencas ĉiu pasaĝero nomo kaj ilia domo. Do eble vi povas aldoni kelkajn parametroj tie por la pasaĝero celoj. Por helpi nin detekti ĉiuj pasaĝeroj atingo de nia pramo, ni buklo tra ĉiuj la pasaĝeroj en la pasaĝeroj tabelo. A por buklo en JavaScript povus rigardi io tiamaniere, tre similaj al tiujn por buklo en C. Aŭ ni povas uzi alternativo por buklo strukturo. Por var i en tabelo, kie mi ankoraŭ estos la indekso. Sed vi ne bezonas specifi la tabelo dot longo kondiĉo, kaj i plus plus. Ĉiu pasaĝero La situo estas donita per ilia loko markon. Sed la loko markon ne estas la latitudo kaj longitudo. Ni devas aliri tiujn parametrojn per atingi la geometrio, uzante get geometrio sur la loko markon. Kaj poste kiam ni havas la geometrio, akiri ĉu la latitudo aŭ la longitudo, uzante tiujn funkciojn. Do nun ni scias kiel detekti cxu pasaĝeroj estas ene gamo de nia pramo. Iam ni havis tiujn pasaĝeroj, ni volas aldoni ajnan pasaĝerojn, kiuj estas ene de tiu gamo. Ni volas ilin permesas saltadi sur, kaj preni sidlokon sur nia pramo, sed nur se ni havas sufiĉan spacon al ili. La pramo dot seĝojn tabelo volo indiki, cxu tronoj estas malplena, aŭ kiuj kuŝas en tiu seĝo. Do se sidlokon estas malplena, tiam ke segxo estos nula. Do ankaŭ persisti super la seĝojn tabelo, kontrolanta por malplenaj benkoj, stokante pasaĝeroj en tiuj seĝoj ĝis vi ne havas plu malplenaj seĝoj. Kaj bedaŭrinde, neniu alia pasaĝeroj devos atendi la venontfoje la pramo venas ĉirkaŭe. Iam ili ricevas en la pramo, ni volas por forigi ilian lokon markon, kiu estas ilia foto en la 3D mondo. Se mi volis forigi lokon markon p, tiam mi akirus ĉiuj el la trajtoj el mia tero, de la Google Earth, kaj tiam forigi tiu specifa loko marki uzanta la removeChild funkcio. Tiam laste, ni forigu la markilo, la ikono sur la 2D mapo por ajna pasaĝero ke ni reprenis. Por forigi markilo, m, tiam Mi timige nur ekzekuti m dot setMap nula. Faru tion por ajna pasaĝeroj ene gamo, kaj vi jam finis briketoj.