>> 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.