ZAMYLA Chan: Nu, šeit mēs esam, pēdējā p-noteikts CS50. Apsveikt sevi no tā, nonākusi tik tālu, jo savu pirmo Sveiki Pasaulēm un Printing Up Piramīdas Mario. Jūs, kas mājas lapā pagājušajā nedēļā. Un mēs ejam, dod vēl vienu šonedēļ, viens, kas ļauj vadīt ap Hārvardas universitātes, izvēloties līdz CS50 darbiniekiem un apvienojot tos atpakaļ uz savu dzīvojamās mājas. Tagad, pagājušajā nedēļā mēs strādājām PHP, servera puses valoda. Šim p-kopumu, mēs esam kļūst ieviesti JavaScript, kas klienta puses valoda. Tātad, pieņemsim to apskatīt dažus no sadales kodu, kas ir sniegta jūs par šo p-komplektu. Jo JavaScript mapē, tur būs būt ķekars JavaScript failus. Ir buildings.js, kas satur masīvs ēku ap Harvard Campus ar savu informāciju un amats. Houses.js ir masīvs Harvard dzīvojamās mājas ar to platuma un garuma grādi. Passengers.js satur masīva pasažieru, CS50 darbinieki ka jūs celt atpakaļ viņu dzīvojamās mājas. Math3D.js, kas satur daudz funkcijas, ko darīt ar kustību. Ja jūs esat matemātiski domājošiem, tad Es apsveicu jūs to apskatīt. Bet jums nav nepieciešams, lai izprastu viss tur. Shuttle.js, kas nodarbojas ar shuttle kustību. Un index.html ir mājas lapa, kur viss notiek, tiešām, ja Lietotājs mijiedarbojas ar vietu. Service.css ir CSS stila lapas, , kas papildus čivināt Sāknēšanas bibliotēka, kontroles kā index.html izskatās. Un tad mums ir arī service.js, kas satur dienesta funkcijas Shuttle. Un šeit ir, ja jūs esat būs aizpildot dažas do to-s. Tagad pieņemsim apskatīt objektu un asociatīvas bloki Javascript, kas, visiem nolūkiem un, ir savstarpēji aizvietojami. Ja es gribēju, lai objekta mainīgo sauc zizlis, es vēlētos jādeklarē. Un iekšpusē šiem cirtaini bikšturi, es būtu norādīt, galvenais ir vienradzis, koka ir ķiršu, un tās garums ir 13. Tagad es varu piekļūt arī vērtības objektu, izmantojot asociatīvā masīva notācija. Tāpēc zizlis indekss kodols, es varu iestatīt kas vienāda ar vienradzis, vai pārbaudīt, ka, ja man ir nepieciešams. Vai es varu izmantot dot operatoram wand.wood vienāds ķiršu, un tā tālāk, un tā tālāk. Tātad jūs redzat, ka asociatīvas bloki un objekti JavaScript būs savstarpēji aizvietojami, un būs nonāk diezgan parocīgs. Tad mēs redzam virkni ēku in buildings.js, atkal, masīvs objektiem. Ja es gribēju, lai masīvu labākajiem ēkas uz Hārvarda universitātes pilsētiņā, tad Es būtu to šādi. Izmantojot šo objektu apzīmējumu, ja Es glabāt saknes, nosaukumu, adresi, platuma un garuma par katru viena ēka objekts. Pieņemsim ātri runāt par mainīgajiem JavaScript. Piemēram, PHP, JavaScript mainīgie ir vāji vai brīvi drukāti. Lai izveidotu vietējās mainīgo, jums prefiksu mainīgā nosaukums ar V-A-R, var. Tagad, JavaScript, funkcijas ierobežot mainīgo. Tātad, ja jums ir vietējās mainīgais laikā funkciju, tad citas funkcijas nevar piekļūt. Bet atšķirībā no C, cilpas un nosacījumi nav ierobežot mainīgo. Tātad, pat ja jums paziņo, ka tā iekšpusē nosacījums, visa funkcija tai piekļūt. Tagad, bez VAR, mainīgais būs globāla. Tātad, ja jūs vienkārši atzīt vārdu un piešķirtu vērtību, tad mainīgais būs pasaules mainīgais JavaScript. Tagad, mājās, mums ir asociatīvā masīvs uzņēmējas tipa objektiem, kur katrā mājā ir tikai platuma un garuma. Tad mums ir pasažieriem bloku, kas ir masīvs objekta veids pasažieri. Tātad, katram pasažierim ir lietotājam vārdu, nosaukumu un māju. Ievērojiet, ka es saku tipa pasažieru, kas patiesībā nozīmē tikai to, ka katrs objekts ir pašu galveno vērtību pārus. Līdz ar to katrs objekts tipa pasažieris lietotāja vārds, vārds, un māja. Tātad, ko mums vajag darīt, lai p-kas? Nu, mums ir nepieciešams, lai ļautu lietotājiem izvēlēties up darbiniekiem, lai parādītu visas personāla locekļiem, kas pašlaik mūsu transfērs, un nomest tos off. Un tad mēs runāsim arī par papildu funkcijas, ko var īstenot, lai Shuttle p-set. Bet parunāsim par pikaps pirmās. Par CS50 darbinieku sejas ir stādīt visā universitātes pilsētiņā, kur katra seja tiek īstenota kā vieta zīmi uz 3D Zemes, un kā marķieris uz 2D kartē. Tātad, ja lietotājs noklikšķina uz Pickup pogu, mēs vēlamies, lai pievienotu tuvumā pasažieriem uz atspole. Un mēs arī vēlamies, lai izņemtu savu vietu iezīmēt no pasaules un izņemiet to marķieris no kartes, kas norāda, ka viņi ir mūsu autobuss tagad. Tātad, kā mēs atklāt, ja pasažieri ir diapazonā no mūsu autobuss? Nu, funkcija distance, tāpēc shuttle.distance, kas iet platuma un garuma, aprēķinās attālums no pašreizējās pozīcijas no shuttle uz punktu, kas norādāt ar to, ņemot vērā platuma un garuma. Tātad jūs varat izmantot šo, lai aprēķinātu attālums no atspole līdz pasažieri. Bet kā jūs zināt, kur pasažieriem ir? Nu, tas ir, ja mums nāksies rediģēt aizpildīt funkciju. Aizpildīt Vietas visi darbinieki pasažieri ievešanu pasaulē un uz kartes, bet nav saglabāt savu atrašanās vietu. Tāpēc varbūt jūs varat saglabāt savu izvietot zīmes un marķieri Dažās pasaules masīvā. Tagad tur jau ir globāla masīvs uzglabāt informāciju no pasažieriem. Pasažieri masīvs veikali katrs pasažiera vārds un viņu māja. Tāpēc varbūt jūs varat pievienot dažus parametrus tur pasažieru objektiem. Lai palīdzētu mums atklāt visus pasažieru diapazonā no mūsu transfērs, pieņemsim cilpas cauri visiem pasažieri pasažieru masīva. Lai cilpa JavaScript varētu izskatīties kaut kas līdzīgs šim, ir ļoti līdzīgi tiem, cilpas C. Vai mēs varam izmantot alternatīva cilpas struktūru, VAR i masīvā, kur es joprojām būs indekss, bet jums nav nepieciešams norāda array.length stāvokli un i + +. Katra pasažiera atrašanās vieta ir ņemot vērā to vietu zīmes. Bet vietā zīme nav platuma un garuma. Mums ir piekļūt šiem parametrus kļūst ģeometriju, izmantojot get ģeometrija par vietu preču zīmi, un pēc tam kad mums ir ģeometrija, kļūst nu platuma vai garuma Izmantojot šo funkciju. Tātad tagad mēs zinām, kā noteikt, vai pasažieri atrodas klāstu mūsu autobuss. Pēc tam, kad mēs esam tos pasažierus, mēs vēlaties pievienot pasažieri, kas ir šajā diapazonā. Mēs gribam, lai tās varētu apiņu un veikt sēdeklis mūsu transfērs, bet tikai ja mums ir pietiekami daudz vietas uz tiem. Shuttle.seats masīvs norādīs vai sēdvietas ir tukšas, vai kurš šajā sēdeklī. Tātad, ja sēdeklis ir tukšs, tad ka vieta būs spēkā. Tāpēc atkārtot virs vietas masīvs, pārbaudot tukšu vietu, uzglabājot pasažieri uz šiem sēdekļiem, kamēr jūs nav nekādu vairāk tukšās vietas. Un diemžēl, jebkuri citi pasažieri būs jāgaida Nākamajā reizē shuttle nāk uz leju. Pēc tam, kad viņi saņem uz atspole, mēs gribam lai novērstu to vietu zīmi, kas ir viņu foto šajā 3D pasaulē. Ja es gribēju noņemt vietu zīmes p, tad es varētu saņemt visas funkcijas no manas zemes, no Google Earth, un tad noņemt, ka konkrētā vietā atzīmēt izmantojot removeChild funkciju. Tad visbeidzot, pieņemsim noņemiet marķieri, ikona uz 2D kartes, jebkuram pasažieru, kas mums ir pacelt. Lai noņemtu marķiera m, tad es ņemšu vienkārši izpildīt m.setMap null. Vai šis visu pasažieru diapazonā, un esat pabeidzis pikaps. Diagramma funkcija ir parādīt visu pasažieru, kas ir jūsu transfērs, un tukša vieta, ja tukšs. Tāpēc shēma būtu atkārtot vairāk shuttle.seats, parādot Informācija par pasažieru katram indeksu, un tukša vieta, ja šis rādītājs ir nulle. Tagad, ja HTML teksts ir likts iekšā JavaScript mainīgo, tad izmantojot document.getElementById, diagramma var rediģēt iekšējo HTML ir, ka, ņemot elementu, piešķirot HTML tekstu document.getElementById iekšējais HTML mainīgs. Kad lietotāji noklikšķina uz pogas aizsnausties in index.html, tas būs zvanu dropoff funkcija. Un tas ir mūsu darbs, lai īstenotu to. In dropoff, mēs vēlamies, lai novērstu jebkādu pasažieri no atspole tikai tad, ja mēs esam diapazonā no to galamērķa, viņu dzīvojamā māja. Tāpēc dropoff būs jāpārbauda, ​​vai shuttle ir diapazonā no jebkura no mājas, un noņemt jebkuru vajadzīgs pasažieri no atspole. Tātad, kā mēs pārbaudām, vai mēs esam diapazonā jebkuru māju? Nu, atkal, mēs izmantot shuttle.distance funkcija, kas iet platuma un garuma punktam ka mēs esam pārbaude pret. Bet to, kas ir tie punkti? Nu, māju masīvs, ja jūs atceraties in houses.js, uzglabā platuma un garuma katrā mājā asociatīvā masīva, kur katrs indekss ir nosaukums šo māju. Pēc tam, lai novērstu pasažieru - labi, tikai tad, ja mēs esam diapazonā no viņu māja, ka viņi vēlas doties. Tātad vēlreiz, atcerieties, ka pasažieri saglabā māju, ka katrs pasažieris vēlas doties. Ja tie ir diapazonā no viņu māju, tad mēs noņemsim, ka pasažieru no shuttle.seats un komplektu savu pozīciju masīvā null. Tagad parunāsim par dažiem papildu funkcijas kas var tikt īstenota CS50 Shuttle p-set. Tur ir punktu sistēma, kurā jums izsekot, cik daudz norāda lietotājs ir. Pilināšanai pasažierus veiksmīgi, viņi var saņemt punktus. Bet mēģina aizsnausties pasažierus ja nav nekādas māju tuvumā, labi, viņi var saņemt sodu par to. Tāpēc varbūt jūs vēlaties, lai izsekotu punkti globālā mainīgā. Jūs varat īstenot varbūt taimeri, kurā lietotājam ir zināma laiks, lai uzņemt un aizsnausties noteiktu pasažieru skaitu. Varbūt pat iekļaut šo ar punktu sistēmu. Vai arī jūs varat rediģēt Chart tāds, ka pasažieriem ir sakārtoti atbilstoši to māju. Tā, ka, iespējams, būtu sava veida funkciju, lai shuttle.seats. Jūs varat īstenot peld funkciju, kur, ja lietotājs ievada ar Konami kods, tad transfērs liftu off zemes un transporta var lidot. Bet par drošu aizsnausties, vislabāk, lai padarītu shuttle izkraut riteņi uz zemes pirmās. Jūs varat arī īstenot teleportācija, kur jūs veicat nolaižamo sarakstu ēkas index.html. Un izvēloties vienu no tiem, lietotājs tiks transportētas uz ka balstoties uz universitātes pilsētiņā. OK, lai gan, ceļot cauri sienas dažu ēkas pa ceļam tur. Jūs varat arī mainīt ātrumu transfērs, kas ļauj lietotājam palielināt vai samazināt ātrumu. Varbūt jūs vēlaties globālo mainīgo izsekot, cik daudz degvielas shuttle ir, samazinot tā kā jums iet līdzi. Tiklīdz jūs hit nulle, lai gan, transports nebūs spējīgs pārvietoties, ja vien jūs esat degvielu, iespējams, izmantojot pogu, vai pat padarīt savu gāzes staciju. Bet tas, protams, nav izsmeļošu sarakstu. Izbraukšana spec par pilnīgu sarakstā, vai varbūt ierosināt savu, lai jūsu TF. Debesis ir robeža. Šī ir jūsu pēdējā CS50 p-set, lai būtu jautri ar to. Tas bija CS50 Shuttle. Man jāsaka, tas ir bijis prieks padarot tos par jums ar ražošanas komanda. Un es ceru, ka jūs esat izmantot tos, kā arī. Mans vārds ir Zamyla. Un tas bija CS50.