ZAMYLA CHAN: Na, čia mes esame, paskutinis p nustatytas CS50. Sveikinu save gražu taip toli nuo savo pirmojo Sveiki Pasauliai ir spausdinimo Iki Piramidės Mario. Jūs padarė svetainę praėjusią savaitę. Ir mes ketiname būti padaryti dar vieną šią savaitę, vienas, kad leidžia vairuoti aplink Harvardo universiteto, skinti iki CS50 darbuotojų ir pareikšti juos atgal į savo gyvenamieji namai. Dabar, praėjusią savaitę mes dirbome PHP programavimo kalba, server-side kalba. Dėl šios p-rinkinys, mes gauti pristatė JavaScript ", kuri yra kliento pusėje kalba. Taigi, galime pažvelgti į kai atrodo platinimo kodą, kuris yra teikiamas į Jūs šiuo p-rinkinys. Be JavaScript aplanką, ten bus būti JavaScript failų krūva. Yra buildings.js, kuriame yra masyvas pastatų visame Harvardo miesteliu su savo informacija ir pareigos. Houses.js yra Harvardo masyvas gyvenamieji namai su jų geografinė ilguma ir platuma. Passengers.js yra masyvas keleivius, CS50 darbuotojai kad jums bus sugrįžus į gyvenamieji namai. Math3D.js, kad yra daug daug funkcijos daryti su judėjimo. Jei esate matematiškai bendraminčių, tada Aš kviečiame Jus pažvelgti. Tačiau jums nereikia suprasti viskas ten. Shuttle.js, kuri susijusi su Shuttle judėjimą. Ir index.html namų puslapiu kur viskas vyksta, tikrai, kur vartotojas sąveikauja su svetaine. Service.css yra CSS stiliaus lapo, kuris kartu su Twitter Bootstrap biblioteka, valdikliai kaip index.html atrodo. Ir tada mes taip pat turime service.js, kurios yra paslaugų funkcijas vėžėjas. Ir čia, kur jūs ketinate būti pildant kai į-do-aisiais. Dabar galime pažvelgti objektų išvaizdą ir Association masyvai JavaScript, kuris, visų ketinimų ir tikslų, yra keičiamos. Jei aš norėjau, kad objekto kintamąjį vadinamas lazdelė, norėčiau paskelbti ją. Ir viduje tuos garbanotas petnešos, norėčiau nurodyti, esmė yra vienaragis, medienos yra vyšnių ir ilgis 13. Dabar aš taip pat galite pasiekti vertybes objektų, naudojant masyvą žymėjimas. Taigi lazdelė puslapis branduolys, galiu nustatyti kad lygios vienaragis, arba patikrinti, jei man reikia. Arba galiu naudoti dot operatorius wand.wood Lygu vyšnių ir taip toliau ir taip toliau. Taigi matote, kad asociatyviniai matricas ir objektai JavaScript ketinate būti keičiamos ir valia būna gana patogu. Tada matome Pastatų masyvas į buildings.js, vėl objektų masyvo. Jei aš norėjau padaryti iš geriausių masyvo pastatai Harvardo universiteto, tada Norėčiau, kad jį taip. Naudojant šį objektą žymėjimą, kur Aš laikyti root, pavadinimas, adresas, platumos ir ilgumos už kiekvieną vienas pastatas objektas. Leiskite greitai kalbėti apie kintamuosius JavaScript. Kaip PHP, JavaScript kintamieji silpnai arba laisvai atspausdinti. Norėdami sukurti kintamąjį, galite priešdėlis kintamojo vardas su V-A-R, var. Dabar, JavaScript, funkcijos apriboti kintamųjų taikymo sritis. Taigi, jei turite vietos kintamąjį per funkcija, tada kitas funkcijas negali pasiekti. Tačiau, skirtingai nei C, kilpos ir sąlygos ne apriboti kintamojo aprėptį. Taigi, net jei jūs paskelbti jį viduje sąlyga, visa funkcija turėti prieigą prie jo. Dabar, be var kintamasis bus pasaulio. Taigi, jei jūs tiesiog paskelbti vardą ir priskirti vertę, tai kintamasis bus pasaulinį kintamąjį JavaScript. Dabar, namų, mes turime Association masyvas priimančiosios tipo objektams, kur kiekvienas namas yra tik platuma ir ilguma. Tada mes turime keleivius masyvas, kuris yra masyvas keleivių objektas tipo. Taigi, kiekvienas keleivis turi vartotoją pavadinimą, vardą, pavardę, ir namą. Atkreipkite dėmesį, kad aš sakau tipo keleivių, o tai tikrai tik tai kad kiekvienas objektas turi patys svarbiausi reikšmės poros. Taigi, kiekvienas keleivis tipo objektas turi vartotojo vardas, pavardė, ir namas. Taigi, ką mes turime daryti, kad p-rinkinys? Na, mes turime leisti vartotojams pasirinkti iki darbuotojų, kad būtų rodomi visi personalo nariai, kurie šiuo metu Mūsų autobusas ir upuść juos išjungti. Ir tada mes taip pat kalbame apie papildomą funkcijos, kurios gali būti įgyvendintos vėžėjas p rinkinys. Bet pakalbėkime apie pikapas pirmas. Iš CS50 darbuotojų veidai buvo pasodinti visame miestelyje, kur kiekvienas veidas įgyvendinama kaip vieta ženklo ant 3D Earth, ir kaip žymeklis 2D žemėlapyje. Taigi, kai vartotojas paspaudžia Pickup mygtuką, mes norime pridėti netoliese keleiviai į uostą. Ir mes taip pat norite pašalinti savo vietą pažymėti nuo pasaulio ir pašalinti jų žymeklis iš žemėlapio, kuriame nurodoma, kad jie į mūsų uostą dabar. Taigi, kaip mes nustatyti, ar keleiviai yra per daug mūsų uostą? Na, funkcija atstumas, todėl shuttle.distance, einančios platuma ir ilguma, apskaičiuos Atstumas nuo dabartinės padėties nuo iki taško uostą, kad galite nurodyti, kad atsižvelgiant į su platuma ir ilguma. Taigi, galite naudoti šią apskaičiuoti atstumas nuo maršrutiniu autobusu keleivių. Bet kaip jūs žinote, kur keleiviai yra? Na, tai kur mes turime redaguoti gyventojų funkciją. Užpildyti sudėtos visų darbuotojų keleivius į pasaulį ir į žemėlapį, bet ne laikyti savo buvimo vietą. Taigi, galbūt galima laikyti jų vieta ženklus ir žymenis kai pasaulio masyvo. Dabar ten jau yra pasaulinė masyvas saugoti informaciją iš keleivių. Keleiviai masyvo parduotuvėse kiekvienas keleivio vardą ir savo namuose. Taigi gal galite įlašinti kelis parametrus ten keleivių daiktų. Kad padėtumėte aptikti visus keleivių per daug mūsų uostą, tegul kilpa per visus keleiviai Keleivių masyvo. Už kilpa JavaScript gali atrodyti kažkas panašaus į tai, labai panašus į tiems, vyrių į C Arba mes galime naudoti alternatyva ciklo struktūra, var i masyvas, kur aš vis dar bus indeksas, bet nereikia nurodyti array.length būklė ir i + +. Kiekvienas keleivis vieta yra pateiktas jų vieta ženklo. Bet vieta ženklo nėra platuma ir ilguma. Mes turime pasiekti tuos parametrus pagal gauti geometriją, naudojant get geometrijos vieta ženklui, o tada kai mes turime geometrija, gauti arba platumos arba ilgumos naudojant šias funkcijas. Taigi, dabar mes žinome, kaip nustatyti, ar keleiviai per asortimentą, mūsų autobusas. Kai mes turime tuos keleivius, mes norite pridėti keleiviai, kurie tame areale. Mes norime, kad jie galėtų šokinėti ant ir imtis mūsų autobusas sėdynės, bet tik jei turime pakankamai vietos jiems. Shuttle.seats masyvas bus nurodyti ar sėdynės yra tuščias, arba kas toje sėdynėje. Taigi, jei sėdynė yra tuščias, tada kad būstinė bus niekinis. Taigi pakartoti per vietų masyve tikrinti tuščių vietų, saugoti keleiviai į tų vietų, kol neturiu daugiau tuščių vietų. Ir, deja, visi kiti keleiviai turės palaukti Kitą kartą autobusas nužengia. Kai jie gauna į uostą, mes norime pašalinti savo vietą ženklą, kuris yra jų nuotraukos 3D pasaulyje. Jei aš norėjau išimti vieta ženklo p, tada norėčiau gauti visas funkcijas mano Žemėje, iš Google Earth ir tada pašalinti, kad konkrečioje vietoje pažymėti naudojant removeChild funkciją. Tada galiausiai galime pašalinti žymeklį, ant 2D žemėlapio piktograma, bet keleivių, kad mes įlaipinami. Norėdami pašalinti marker m, tada aš tik vykdyti m.setMap null. Ar tai jokių zonoje esančių keleivių, ir baigsite pikapas. Diagramos funkcija turėtų rodyti visus keleivių, kurie yra savo autobusas ir tuščia vieta, jei tuščias. Taigi schema turėtų kartoti per shuttle.seats, rodyti Keleivių informavimo apie kiekvieną indeksą, ir tuščia vieta, jei tas puslapis yra niekinis. Dabar, jei HTML tekstas įdėti viduje JavaScript kintamąjį, tada naudojant document.getElementById, diagramos skardinė redaguoti vidinį HTML tos konkrečios elementas skiriant HTML tekstas document.getElementById vidinis HTML kintamasis. Kai vartotojas paspaudžia mygtuką užsnūsti į index.html, tai kviesiu Pertraukties funkcija. Ir tai mūsų darbas tai įgyvendinti. Be Pertraukties, mes norime pašalinti bet keleiviai iš uostą tik tuomet, jei mes diapazone jų paskirties vietą, jų gyvenamasis namas. Taigi Pertraukties turės patikrinti, ar autobusas yra diapazone bet namai, ir pašalinti bet reikia keleiviai iš erdvėlaivio. Taigi, kaip mes patikrinti, ar mes diapazone bet namų? Na, dar kartą, mes pasinaudoti shuttle.distance funkciją, einančios platumos ir ilgumos taško kad mes patikrinti prieš. Bet kas yra tie taškai? Na, namų masyvas, jei pamenate, į houses.js, saugo platuma ir ilguma Kiekvieno namo masyvą, kur kiekvienas indeksas yra to namo pavadinimas. Tada pašalinti keleivius - gerai, tik jei mes diapazone jų namo, kad jie nori eiti. Taigi dar kartą, nepamirškite, kad keleiviai saugo namus, kad kiekvienas keleivis nori eiti. Jeigu jie per daug jų namas, tada mes pašalinti, kad keleivių iš shuttle.seats ir nustatyti jų pozicija masyve nulis. Dabar pakalbėkime apie kai kurių papildomų funkcijų , kurie gali būti įgyvendinami CS50 vėžėjas p rinkinys. Yra taškų sistema, pagal kurią sekti, kiek nurodo vartotojas. Dėl numesdami keleivius sėkmingai, jie gali gauti taškus. Bet bando užsnūsti keleivių kai nėra šalia bet namuose, gerai, jie gali gauti baudos už tai. Taigi, galbūt norite stebėti Į globalaus kintamojo taškų. Jūs galite įgyvendinti galbūt laikmatis, kur vartotojas turi tam tikrą laikas pasiimti ir užsnūsti tikras skaičius keleivių. Gal net integruoti šią su taškų sistema. Arba galite redaguoti diagramą taip, kad keleiviai surūšiuoti pagal namą. Taigi, kad tikriausiai bus rūšiuoti veikti iki shuttle.seats. Jūs galite įgyvendinti plaukioja funkciją, kur, jei vartotojas įveda Konami kodas, tada autobusas liftų išjungimas žemės ir autobusas gali skristi. Tačiau saugaus užsnūsti, geriausia, kad uostą iškrauti savo ratus žemės pirmas. Jūs taip pat galite įgyvendinti teleportacijos, jei jūs padarote išskleidžiamajame sąraše pastatai index.html. Ir pasirinkti vieną iš jų, vartotojas bus vežami į kad pastatas miesteliu. Gerai, nors keliauti per Kai kurių sienos pastatai savo kelią ten. Jūs taip pat galite pakeisti greitį sankabos, kad vartotojas galėtų didinti arba sumažinti greitį. Galbūt norite pasaulinį kintamąjį į sekti, kiek kuro Shuttle, mažėja tai kaip jūs einate kartu. Kai paspausite nulį, nors autobusas nebus galima perkelti, jei jūs degalais, galbūt naudojant mygtuką, arba net padaryti savo degalinė. Bet tai tikrai nėra išsamus sąrašas. Patikrinkite spec už visą sąrašą, arba galbūt pasiūlyti savo savo TF. Dangus yra riba. Tai jūsų paskutinis CS50 p rinkinys, taip smagiai su juo. Tai buvo CS50 vėžėjas. Aš turiu pasakyti, tai buvo malonu padaryti šiuos jums su gamybos komanda. Ir aš tikiuosi, kad jūs mėgautis jais, taip pat. Mano vardas Zamyla. Ir tai buvo CS50.