>> ZAMYLA CHAN: Nu, jen ni, la lasta p-aro en CS50.
Gratulas vin de devi veni ĝis nun ekde via unua Saluton
Mondoj kaj Presado Supren Piramidoj 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
vin pro ĉi 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 siaj
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 Shuttle 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, kiu aldone al 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 por-do-aj jaroj.
>> Nun ni rigardu celoj kaj asocieca arrays en JavaScript,
kiuj, 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 volus 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 wand.wood 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 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 domojn, ni havas asocieca tabelo de gastiganto 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 uzanto nomo, nomo, kaj domon.
>> Rimarku, ke mi estas diranta de tipo pasaĝero, kiu vere simple signifas
ke ĉiu objekto havas la sama klavo valoro paroj.
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 Shuttle 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 Pickup butono, ni volas aldoni proksima
pasaĝeroj al la pramo.
Kaj ni ankaŭ volas forigi ilian lokon marki de 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 shuttle.distance, pasante en la
latitudo kaj longitudo, estos kalkuli la distancon de la aktuala pozicio
de la pramo al la punkto, 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 en la pasaĝeroj en la mondon
kaj en la mapo, sed ne stoki ilia situo.
Do eble vi povas stoki iliaj meti kadroj kaj markiloj
en iu tutmonda tabelo.
>> Nu, tie 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 la 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 masxojn 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 array.length kondiĉo kaj mi + +.
>> Ĉ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, marko, kaj tiam iam ni havos la geometrio, atingante
ĉ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 hop en kaj prenu sidlokon sur nia pramo, sed nur
se ni havas sufiĉan spacon al ili.
>> La shuttle.seats tabelo indikos ĉu sidejoj 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 malsupren.
>> 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 iu ajn
pasaĝero ke ni reprenis.
>> Por forigi markilo m, tiam Mi timige nur ekzekuti m.setMap nula.
Faru tion por ajna pasaĝeroj ene gamo, kaj vi jam finis briketoj.
La abako funkcio devus vidigi la tutan de la pasaĝeroj, kiuj estas en via
pramo, kaj malplenaj segxo se malplenaj.
Do abako devas persisti super shuttle.seats, montranta la
pasaĝero informon por ĉiu indekso, kaj malplena sidloko se tiu indekso estas nula.
>> Nun se HTML teksto estas metitaj ene de Javascript variablo, do per uzo
document.getElementByID, abako tedaĵo redaktu la interna HTML de tiu donita
elemento atribuante la HTML-teksto al la
document.getElementByID ena HTML variablo.
Kiam la uzantoj klaku la Guto Off butono en index.html, gxi vokos la
dropoff funkcio.
Kaj ĝi estas nia tasko apliki tion.
>> En dropoff, ni volas forigi ajnan pasaĝeroj el la pramo nur se
ni estas en rango de ilia destino, ilia residenciales domo.
Do dropoff devos kontroli, ĉu la pramo estas en rango de iu el la
domojn, kaj forigi ajnan bezonataj pasaĝeroj el la pramo.
Do kiel fari ni kontrolu ĉu ni estas en gamo de ajna domoj?
Nu, plue, ni devos fari uzon de la shuttle.distance funkcion, pasante en
la latitudo kaj longitudo de la punkto kiuj ni estas kontrolanta kontraŭ.
>> Sed kio estas tiuj punktoj?
Nu, la domoj tabelo, se vi memoras en houses.js, stokas la
latitudo kaj longitudo de ĉiu domo en asocieca tabelo, kie ĉiu
indekso estas la nomo de tiu domo.
Tiam forigi pasaĝeroj -
bone, nur se ni estos en rango de ilia domo, kiun ili volas iri.
Do denove, memoru, ke la pasaĝeroj stokas la domo, kiun ĉiu pasaĝero
volas iri al.
Se ili estas atingo de siaj domo, tiam ni devos forigi ke
pasaĝero el shuttle.seats kaj aro lia pozicio en la tabelo por nula.
>> Nun ni parolu pri iuj ekstrajn funkciojn kiu povas esti realigita en
la CS50 Pramo p-aro.
Tie estas punkto sistemo per kiu vi konservi trako de kiom
antaŭ uzanto havas.
Por ekdormis pasaĝeroj sukcese, ili povas akiri punktojn.
Sed por provi faligi ekstere pasaĝeroj kie ne estas iu ajn domo proksima,
bone, ili povas akiri punita pro tio.
Do eble vi volas konservi spuron de La punktoj en globala variablo.
>> Vi povas apliki eble timer, kie La uzanto havas certan kvanton de
tempon por repreni kaj malfiksi suferintojn iu numero de pasaĝeroj.
Eble eĉ integri tiun kun la punkto sistemo.
Aux vi povas redakti Chart tiaj ke pasaĝeroj estas ordo por domo.
Por ke probable estus speco funkcii al shuttle.seats.
>> Vi povas apliki fluganta trajto, kie, se la uzulo enigas la Konami
kodo, tiam la pramo levas super la teron kaj la pramo povas flugi.
Sed por sekura guto for, pli bone fari la pramo surteriĝi lia radoj sur la
mueladis unue.
Vi povas ankaŭ apliki teletransportación, kie vi faras falmenuo de
konstruaĵoj en index.html.
Kaj selektante unu el tiuj, la uzanto estos transportitaj al
ke konstruaĵo surterene.
OK, kvankam, vojaĝi tra la muroj de iu
konstruaĵoj sur via vojo.
>> Vi povas ankaŭ ŝanĝi la rapidecon de la pramo, permesante al la uzanto por pliigi
aŭ malpliigi la rapidon.
Eble vi volas globala variablo por sekvigi kiom brulaĵon la
pramo havas, malkreskanta kiel vi iru kune.
Unufoje vi batis nulo, kvankam, la pramo ne povos movi krom se vi havas
reprovizis, eble uzante butonon, aŭ eĉ fari viajn proprajn benzinstacio.
>> Sed tio certe ne estas ĝisfunda listo.
Kontrolu la specifo por plena listo, aŭ eble proponi
viajn proprajn al via TF.
La ĉielo estas la limo.
Ĉi tiu estas via lasta CS50 p-aro, tiom amuziĝi per ĝi.
Tio estis CS50 Shuttle.
>> Mi devas diri, jam pasis plezuro farante tiujn por vi kun la
produktado teamo.
Kaj mi esperas, ke vi havas ĝui ilin, tiel.
Mia nomo estas Zamyla.
Kaj tio estis CS50.