ZAMYLA Chan: Well, dito tayo, ang huling p-set sa CS50. Bumati inyong sarili mula sa pagkakaroon ng dumating sa ngayon dahil ang iyong unang Kamusta Mundo at Pag-print ng Up Pyramids para sa Mario. Nagsagawa ka ng isang website noong nakaraang linggo. At kami ay pagpunta sa ginagawang isa pa ngayong linggo, isa na nagbibigay-daan sa iyo upang magmaneho sa paligid ng Harvard campus, pagkuha up miyembro ng kawani CS50 at nagdadala sa mga iyon pabalik sa kanilang residential mga bahay. Ngayon, huling linggo namin nagtrabaho sa PHP, isang wika gilid server. Para sa mga ito p-set, nagsisimula pa kami ipinakilala sa JavaScript, na isang wika panig ng client. Kaya ipaalam sa tumagal ng isang pagtingin sa ilan sa mga pamamahagi code na ibinigay sa sa iyo para sa p-set. Sa folder ng JavaScript, ay mayroong maging isang bungkos ng mga file sa JavaScript. Mayroong buildings.js, na naglalaman ng isang array ng mga gusali sa paligid ng Harvard campus kasama ang kanilang impormasyon at posisyon. Houses.js ay isang array ng Harvard residential mga bahay sa kanilang mga latitude at longitudes. Passengers.js ay naglalaman ng isang hanay ng mga pasahero, ang mga miyembro ng kawani CS50 na ikaw ay nagdadala pabalik sa kanilang residential mga bahay. Math3D.js, na naglalaman ng maraming mga function na gawin sa kilusan. Kung ikaw ay mathematically isip, pagkatapos ay Tinatanggap ko sa iyo upang tingnan. Ngunit hindi mo kailangang maunawaan lahat ng bagay sa doon. Shuttle.js, na deal na may kilusan ang Shuttle ni. At index.html ay ang home page kung saan ang lahat ng bagay ang mangyayari, talaga, kung saan ang user ay nakikipag-ugnayan sa site. Service.css ay ang estilo ng CSS sheet, na bilang karagdagan sa Twitter Bootstrap Library, mga kontrol paano index.html hitsura. At pagkatapos ay mayroon din namin service.js, na Naglalaman ang mga pag-andar ng serbisyo para sa ang Shuttle. At dito ay kung saan ka magiging pagpuno sa ilan sa mga na-do ni. Ngayon ipaalam sa tumagal ng isang pagtingin sa mga bagay at nag-uugnay array sa JavaScript, na kung saan, para sa lahat ng mga layunin at mga layunin, ay mapaghahalinhinan. Kung Nais kong gumawa ng isang bagay sa isang variable na tinatawag na isang wand, ako ay Ipinahahayag ito. At sa loob ng mga kulot tirante, nais ko tukuyin, ang core ay kabayong may sungay, ang kahoy ay seresa, at ang haba ay 13. Ngayon, maaari din ko ma-access ang mga halaga ng mga bagay gamit ang nag-uugnay array pagtatanda. Kaya wand index ng core, maaari ba akong magtakda na katumbas ng kabayong may sungay, o suriin na kung kailangan ko. O maaari ko bang gamitin ang tuldok operator wand.wood ay katumbas ng seresa, at kaya sa at iba pa. Kaya nakikita mo na nag-uugnay array at bagay sa JavaScript ay pagpunta sa maging mapaghahalinhinan, at kalooban dumating sa lubos na madaling gamitin. Pagkatapos makita natin ang isang array ng mga gusali sa buildings.js, muli, isang array ng mga bagay. Kung Nais kong gumawa ng isang array ng mga pinakamahusay na mga gusali sa Harvard campus, pagkatapos ay Gusto ko gawin itong tulad ng sumusunod. Gamit ang pagtatanda sa bagay, kung saan Mag-imbak ko root, pangalan, address, latitude, at longitude para sa bawat solong gusali sa bagay. Ng mabilis na makipag-usap tungkol sa mga variable ng Hayaan sa JavaScript. Tulad ng PHP, JavaScript variable ay mahina o maluwag na-type. Upang lumikha ng isang lokal na variable, prefix mo pangalan ng variable na may V-A-R, var. Ngayon, sa JavaScript, mga pag-andar habilin limitahan ang saklaw ng variable. Kaya kung mayroon kang isang lokal na variable sa loob isang function, pagkatapos ay iba pang mga pag-andar Hindi maaaring ma-access ito. Ngunit hindi tulad ng C, loop at kundisyon ay hindi limitahan ang saklaw ng isang variable. Kaya kahit kung ipinahayag mo ito sa loob ng isang kalagayan, ang buong pag-andar habilin may access dito. Ngayon, nang walang var, ang variable Magiging global. Kaya kung ipinahayag mo lang ang pangalan at magtalaga ng isang halaga, pagkatapos ay i-variable na ay magiging isang global variable sa JavaScript. Ngayon, sa mga bahay, mayroon kaming isang nag-uugnay array ng mga bagay na uri ng host, kung saan bawat bahay ay isang latitude lamang at longitude. Pagkatapos ay mayroon kaming mga pasahero array, na kung saan ay isang array ng uri ng bagay na pasahero. Kaya bawat pasahero ay may gumagamit pangalanan, isang pangalan, at ng bahay. Pansinin na ako sinasabi ng uri pasahero, na talagang lamang ay nangangahulugan na ang bawat bagay ay may parehong key halaga ng mga pareho. Kaya ang bawat uri ng object na pasahero ay may isang user name, isang pangalan, at ng bahay. Kaya kung ano ang kailangan namin upang gawin para sa p-set? Well, kailangan namin upang payagan ang mga gumagamit na pumili up miyembro ng kawani, upang maipakita ang lahat ng ang mga miyembro ng kawani na kasalukuyang nasa ang aming shuttle, at sa drop ang mga ito off. At pagkatapos ay gagamitin din namin makipag-usap tungkol sa mga dagdag na tampok na maaaring ipinapatupad para sa ang Shuttle p-set. Ngunit-usapan natin ang tungkol sa pickup muna ipaalam. Ang mga mukha ng CS50 kawani ay inalisan nakatanim sa buong campus, kung saan ang bawat mukha ay ipinatupad bilang isang marka lugar sa 3D Earth, at bilang isang marker sa 2D na mapa. Kaya kapag nag-click ang mga pickup button, gusto naming idagdag sa malapit pasahero sa shuttle. At gusto rin naming alisin ang kanilang mga lugar markahan mula sa mundo at alisin ang kanilang marker mula sa mapa, na nagpapahiwatig na ang mga ito ay sa aming shuttle ngayon. Kaya paano ko nakita naming kung pasahero Nasa hanay ng aming mga shuttle? Well, ang function ng distansya, kaya shuttle.distance, pagpasa sa latitude at longitude, kakalkulahin ang distansya mula sa kasalukuyang posisyon ng shuttle papunta sa puntong iyon na tinukoy mo sa ibinigay na iyon latitude at longitude. Kaya maaari mong gamitin ito upang makalkula ang distansya mula sa shuttle papunta sa pasahero. Ngunit kung paano ang kilala mo kung saan ang mga pasahero ay? Well, na kung saan kakailanganin naming i-edit ang populate function. Panahanan ng mga tao lugar lahat ng mga miyembro ng kawani sa mga pasahero sa mundo at sa mga mapa, ngunit hindi maiimbak ang kanilang mga lokasyon. Kaya marahil maaari mong maiimbak ang kanilang mga ilagay ang mga marka at mga marker sa ilang mga pandaigdigang array. Ngayon, doon ay isang pandaigdigang array pag-iimbak ng impormasyon mula sa pasahero. Ang mga pasahero array na tindahan sa bawat pangalan ng pasahero at ang kanilang mga bahay. Kaya marahil maaari kang magdagdag ng ilang mga parameter doon sa mga pasahero bagay. Upang matulungan kaming nakakita ng lahat ng pasahero sa loob ng saklaw ng aming shuttle, loop let sa pamamagitan ng lahat ng mga pasahero sa mga pasahero ng array. A para sa loop sa JavaScript maaaring tumingin isang bagay na tulad nito, na halos kapareho sa mga para sa mga loop sa C. O maaari naming gamitin ang isang alternatibo para sa loop istraktura, para sa var i sa array, na kung saan ay i pa rin index, ngunit hindi mo kailangang tukuyin ang array.length kalagayan at i + +. Ang bawat lokasyon ng pasahero ay ibinigay sa pamamagitan ng kanilang marka lugar. Ngunit ang marka lugar ay hindi ang latitude at longitude ang. Mayroon kaming upang ma-access ang mga parameter sa pamamagitan ng pagkuha ng geometry, gamit get geometry sa marka lugar, at pagkatapos ay sa sandaling mayroon kaming ang geometry, pagkuha alinman ang latitude o longitude ang gamit ang mga function. Kaya ngayon alam namin kung gaano upang makita kung pasahero ay nasa loob saklaw ng aming shuttle. Sa sandaling mayroon kaming mga pasahero, kami ay nais na magdagdag ng anumang mga pasahero na sa loob ng saklaw na iyon. Gusto naming payagan ang mga ito upang lumukso sa at tumagal ng puwesto sa aming shuttle, ngunit lamang kung kami ay may sapat na puwang sa kanila. Ang shuttle.seats array ay ipahiwatig kung upuan ay walang laman, o kung sino ang nasa na upuan. Kaya kung ang isang upuan ay walang laman, pagkatapos ay na upuan ay magiging walang bisa. Kaya umulit sa ibabaw ng upuan array, pagsusuri para sa mga walang laman na upuan, pag-iimbak pasahero sa mga upuan hanggang sa iyo Walang anumang higit pang mga walang laman upuan. At sa kasamaang-palad, ang anumang iba pang mga pasahero na kailangang maghintay para sa susunod na pagkakataon ay down na ang shuttle. Sa sandaling makakuha sila sa shuttle, magpapadala kami gusto alisin ang kanilang mga marka lugar, na ay kanilang larawan sa mundo ng 3D. Kung Nais kong alisin ang isang lugar mark p, pagkatapos Gusto ko makakuha ng lahat ng mga tampok mula sa aking Earth, mula sa Google Earth, at pagkatapos ay alisin na partikular na lugar markahan gamit ang removeChild function. Pagkatapos bilang wakas, alisin ni ang marker ipaalam, sa icon sa 2D map, para sa anumang pasahero na pagpili namin up. Upang alisin ang isang marker m, pagkatapos ay idedetalye ko isakatuparan lamang m.setMap null. Gawin ito para sa anumang mga pasahero sa loob ng range, at natapos mo na ang pickup. Dapat ipakita ang function ng tsart lahat ng pasahero na ang nasa iyong shuttle, at walang laman upuan kung walang laman. Kaya dapat umulit sa paglipas ng tsart shuttle.seats, ipinapakita ang impormasyon pasahero para sa bawat index, at walang laman upuan kung index na ay walang bisa. Ngayon kung HTML na teksto ay inilagay sa loob ng isang Variable JavaScript, pagkatapos ay sa pamamagitan ng paggamit document.getElementByID, tsart lata i-edit ang panloob na HTML ng na ibinigay elemento sa pamamagitan ng pagtatalaga ng mga HTML na teksto sa document.getElementByID panloob na variable na HTML. Kapag nag-click ang gumagamit sa pindutan ng Drop Off sa index.html, ito ay tumawag sa dropoff function. At ito ay trabaho ang aming ipatupad iyon. Sa dropoff, ipapakita namin nais na alisin ang anumang pasahero mula sa shuttle lamang kung Ikinalulungkot namin sa sakop ng kanilang patutunguhan, kanilang residential house. Kaya sa dropoff ay magkakaroon upang suriin kung ang shuttle ay nasa hanay ng alinman sa mga mga bahay, at alisin ang anumang kinakailangan pasahero mula sa shuttle. Kaya paano ko tingnan namin kung hindi kami sa hanay ng anumang mga bahay? Well, pa muli, magsasagawa kami ng paggamit ng shuttle.distance function, ang pagpasa sa ang latitude at longitude ng punto na aming pagsusuri laban. Ngunit ano ay ang mga point? Well, ang mga bahay array, kung iyong naaalala sa houses.js, nag-iimbak ang latitude at longitude ng bawat bahay sa isang nag-uugnay array, kung saan ang bawat index ang pangalan ng bahay na iyon. Pagkatapos alisin pasahero - mahusay, lamang kung hindi kami sa hanay ng kanilang mga bahay na gusto nilang pumunta sa. Kaya muli, tandaan na pasahero nag-iimbak ng mga bahay na ang bawat pasahero Nais ng upang pumunta sa. Kung ang mga ito ay sa loob ng saklaw ng kanilang bahay, pagkatapos ay aalisin namin na pasahero mula shuttle.seats at hanay ang kanilang mga posisyon sa array na walang bisa. Ngayon-usapan natin ang tungkol sa ilang dagdag na mga tampok ipaalam na maaaring ipinatupad sa ang CS50 Shuttle p-set. Mayroong isang punto ng sistema kung saan ang mong subaybayan kung gaano karaming tumuturo isang gumagamit ay may. Para umaalis ang mga pasahero matagumpay, maaari silang makakuha ng mga puntos. Ngunit para sa sinusubukang i-drop off pasahero kung saan mayroong hindi anumang house na malapit, na rin, maaari silang makakuha ng minumultahan para iyon. Kaya marahil gusto mong subaybayan ang mga ang mga puntos sa isang global variable. Maaari mong ipatupad marahil isang timer, kung saan May ilang halaga ng user oras upang pumili up at drop-off ang isang tiyak na bilang ng mga pasahero. Siguro kahit pagsamahin ito gamit ang sistema ng punto. O maaari mong I-edit ang Tsart tulad na pasahero ay pinagsunod-sunod sa pamamagitan ng bahay. Kaya na nais marahil maging isang uri gumana sa shuttle.seats. Maaari mong ipatupad ang lumilipad tampok na ito, kung saan kung ang user input ang Konami code, pagkatapos ay i-lift ang shuttle-off ang lupa at ang shuttle maaari lumipad. Ngunit para sa off isang ligtas na drop, pinakamahusay na upang gumawa ng ang shuttle mapunta ang mga gulong nito sa lupa muna. Maaari mo ring ipatupad ang teleportation, kung saan gumawa ka ng isang drop down na listahan ng mga mga gusali sa index.html. At pagpili ng isa sa mga, ang user na ito ay transported sa na gusali sa campus. OK, bagaman, upang maglakbay sa pamamagitan ng mga pader ng ilang mga gusali sa iyong paraan doon. Maaari mo ring baguhin ang bilis ng shuttle, na nagpapahintulot sa gumagamit na i-taasan o bawasan ang bilis. Marahil ay nais mo ang isang global variable sa subaybayan kung gaano karaming fuel ang shuttle ay, mababawasan ang ito bilang pumunta ka kasama. Sa sandaling pindutin mo zero, bagaman, ang shuttle Hindi magagawang upang ilipat maliban kung ikaw ay refueled, marahil gamit ang isang pindutan, o kahit na gawin ang iyong sariling gas station. Ngunit iyon ay tiyak na hindi isang malawakan listahan. Tingnan ang spec para sa buong ilista, o di kaya ipanukala ang iyong sariling sa iyong tf. Ang langit ay ang limitasyon. Ito ang iyong huling CS50 p-set, kaya magsaya sa mga ito. Ito ay CS50 Shuttle. Mayroon akong sabihin, ito ay naging isang kasiyahan ang pagsasagawa ng mga para sa iyo gamit ang produksiyon na pangkat. At Umaasa ako na ikaw ay Tatangkilikin ng mga ito, pati na rin. Ang pangalan ko ay Zamyla. At ito ay CS50.