>> ZAMYLA Chan: Nos, itt vagyunk, az utolsó meghatározott p-CS50.
Gratulálok magatokat attól, hogy olyan messzire, mivel az első Üdvözöllek
Worlds és nyomtatáshoz Piramisok a Mario.
Ön tett egy website a múlt héten.
És mi lesz, hogy egy másik ezen a héten, amelyik lehetővé teszi, hogy
körbevezet a Harvard egyetemen, szedés fel CS50 személyzet tagjai és
hozza őket vissza a lakóházak.
>> Nos, a múlt héten dolgoztunk PHP, egy szerver oldali nyelv.
Ehhez a p-set, mi vagyunk egyre bevezetésre JavaScript, ami egy
kliens oldali nyelv.
Szóval vessünk egy pillantást néhány a elosztás kód, ami nyújtott
neked ezt p-set.
A JavaScript mappában, nem lesz egy csomó JavaScript fájlokat.
>> Van buildings.js, amely egy tömb épületek körül Harvard
egyetemen az információ és helyzetét.
Houses.js egy tömb a Harvard lakóházak azok
szélességi és hosszúsági fokok.
Passengers.js tartalmaz egy sor utasok, a CS50 munkatársak
hogy akkor hozza vissza a lakóházak.
>> Math3D.js, hogy tartalmaz egy csomó funkciók köze a mozgalom.
Ha matematikailag gondolkodású, akkor Üdvözlöm, hogy vessen egy pillantást.
De nem kell, hogy megértsük Minden ott van.
Shuttle.js, hogy foglalkozik a A Shuttle mozgását.
És index.html a honlapon, ahol a minden úgy történik, tényleg, ahol a
felhasználó kölcsönhatásban áll az oldalon.
>> Service.css a CSS stíluslap, amely amellett, hogy a Twitter
Bootstrap könyvtár, az ellenőrzések hogyan index.html néz.
És akkor mi is service.js, amely tartalmaz szolgáltatási funkciók az
a Shuttle.
És itt van, hogy hová mész, hogy kitöltésével néhány to-do.
>> Most vessünk egy pillantást a tárgyak és asszociatív tömbök JavaScript,
amely minden cél és szándék, cserélhető.
Ha akartam, hogy egy objektum egy változó úgynevezett pálcát, azt
nyilvánítja.
És benne azok a kapcsos zárójelek, megtenném adja meg, a mag egyszarvú, a fa
cseresznye van, és a hossza 13.
>> Most is elérheti értékeket A használati tárgyakat
asszociatív tömb jelöléssel.
Tehát pálcát index mag, tudok beállítani hogy az egyenlő az egyszarvú, vagy
Ellenőrizze, hogy ha szükségem van.
Vagy használhatja a pont operátor wand.wood egyenlő cseresznye, és
így tovább és így tovább.
Tehát láthatjuk, hogy asszociatív tömbök és objektumok JavaScript lesz
cserélhető, és az akarat jön a nagyon praktikus.
>> Ekkor megjelenik egy sor épület A buildings.js,
ismét egy sor tárgyakat.
Ha akartam, hogy egy sor, a legjobb épületek Harvard egyetemen, majd
Azt, hogy ez a következő.
Ezzel a tárgy jelöléssel, ahol a Tárolni a gyökér, név, cím,
szélességi és hosszúsági minden egyetlen épületben objektumot.
>> Menjünk gyorsan beszéljünk változókkal JavaScript.
Mint a PHP, JavaScript változókat gyengén vagy gyengén típusos.
Hozzon létre egy helyi változót, akkor prefix A változó neve V-A-R, var.
Most, JavaScript, funkciók körét a változók.
Tehát ha van egy helyi változót belül funkciót, akkor más funkciók
nem tud hozzáférni.
>> De ellentétben a C, hurkok és a feltételek nem korlátozhatja a változó.
Tehát akkor is, ha kijelenti, hogy belsejében egy állapotban, az egész funkció
férhetnek hozzá.
Nos, anélkül, var, változó lesz a globális.
Tehát, ha csak állapítsa meg a nevét és hozzá egy értéket, akkor a változó
lesz egy globális változót JavaScript.
>> Most, házak, van egy asszociatív tömb host típusú objektum, ahol a
minden ház csak egy szélességi és hosszúsági.
Aztán ott van az utasok tömb, amely egy tömb
objektum típusú személygépkocsik.
Szóval minden utas egy felhasználó név, egy nevet, és egy házat.
>> Figyeljük meg, hogy azt mondom típus utas, ami valójában csak azt jelenti,
hogy minden objektum a ugyanaz a kulcs érték párok.
Szóval minden típusú objektum utas a felhasználói nevet, egy nevet, és egy házat.
Szóval mit is kell tenni a p-set?
Nos, meg kell, hogy a felhasználók, hogy vegye fel a személyzet tagjai, a bemutatás minden
a személyzet tagjai, amelyek jelenleg a a transzfer, és vidd őket.
És akkor mi is beszélünk extra funkciókat lehet végrehajtani
A Shuttle p-set.
>> De beszéljünk hangszedő először.
Az arcok CS50 személyzet volt ültetett az egész campus, ahol minden egyes
arc végre egy hely jel a 3D-s Földön, és mint
marker a 2D térkép.
Tehát, ha a felhasználó rákattint a Pickup gombot szeretnénk hozzáadni szomszédos
az utasokat, hogy a transzfer.
És mi is szeretnénk, hogy távolítsa el a helyüket jelölje meg a világ, és távolítsa el a
marker a térképről, jelezve, hogy ők a mi transzfer most.
>> Szóval hogyan lehet felismerni, ha az utas hatósugarán belül tartózkodik, a transzfer?
Nos, a függvény távolság, így shuttle.distance, átadva a
szélességi és hosszúsági, kiszámolja a távolság az aktuális pozíció
A transzfer a lényeg, hogy megadja az, hogy adott
szélességi és hosszúsági fok.
Így ezt a kiszámításához távolság a transzfer a
utasokat.
>> De honnan tudod, hogy hol az utasok?
Nos, ez az, ahol meg kell szerkesztéséhez populate funkciót.
Töltse ki helyen az összes munkatársak az utasok a világ
és a térképet, de nem tárolja a helyét.
Így talán lehet tárolni a helyezzük jelek és jelölők
Egyes globális tömbben.
>> Most már van egy globális tömb tárolja az adatokat az utasok.
Az utasok tömb tárolja minden utas nevét és házuk.
Így talán akkor adjunk hozzá néhány paramétert ott az utas tárgyakat.
>> Hogy segítsen felismerni az összes utas hatókörén belül a mi
shuttle, mondjuk hurok végig a utasok az utasok tömbben.
A for ciklus a JavaScript nézhet valami ehhez hasonló, nagyon hasonlít a
azok a hurkok C. Vagy használhatsz alternatívát hurok szerkezet, a
var i tömbben, ahol én továbbra is az index, de nem kell, hogy
adja meg a array.length állapota és i + +.
>> Minden utas elhelyezkedése által helyüket jelet.
De a hely védjegy nem a szélességi és a hosszúsági.
Van, hogy hozzáférést e paraméterek hogy a geometria, a GET
geometria helyén jelet, majd Ha megvan a geometria, egyre
vagy a szélességi és a hosszúsági használja ezeket a funkciókat.
>> Tehát most már tudjuk, hogyan kell felismerni, hogy a utasok a
palettáját transzfer.
Ha már ezeket az utasokat, fogunk szeretne hozzáadni utasokat, amelyek
e tartományon belül.
Azt akarjuk, hogy lehetővé teszi számukra, hogy a komló, és hogy egy helyet a transzfer, de csak
ha van elég hely a számukra.
>> A shuttle.seats tömb jelzi hogy az ülések üresek, vagy
aki ebben az ülésen.
Tehát, ha az ülés üres, akkor hogy az ülés null lesz.
Így végighaladni az ülések tömb, ellenőrzése üres hely, tároló
utasok azokba helyet, amíg meg nem nincs több üres hely.
És sajnos, minden más utas meg kell várni a
legközelebb a komp jön le.
>> Ha egyszer kap a transzfer, akkor szeretnénk hogy távolítsa el a helyüket jelet, amely
az ő fotó a 3D-s világban.
Ha akartam, hogy távolítsa el a helyre jelet p, akkor azt, hogy az összes funkciót
az én a Föld, a Google Earth, és távolítsa el az adott helyen
jelölje a removeChild funkciót.
Majd végül, hadd vegye a marker, Az ikont a 2D-s térkép, bármilyen
az utas, hogy felvette.
>> Eltávolításához marker m, akkor én csak futtasd m.setMap null.
Ehhez minden utas hatótávolságon belül, és akkor már elkészült felvétel.
A táblázat funkciót megjeleníti az összes az utasok, amelyek a
shuttle, és üres helyet, ha üres.
Tehát ábra kell végighaladni shuttle.seats, megjeleníti a
utastájékoztatási minden index, és üres hely, ha az index null.
>> Most, ha HTML szöveg kerül belsejében egy JavaScript változó, akkor használatával
document.getElementById, diagram szerkeszteni a belső HTML, hogy adott
elemet hozzárendeljük a HTML szöveget
document.getElementById belső HTML változó.
Amikor a felhasználó rákattint a drop off gomb az index.html, akkor fog hívni a
dropoff funkciót.
És ez a mi feladatunk, hogy hajtsák végre ezt.
>> A dropoff, azt akarja, hogy távolítsa el a utasok a komp, ha
vagyunk tartományban helyükre, a lakóház.
Így dropoff kell ellenőrizni, hogy A transzfer tartományban bármelyik
házak, és távolítsa el a szükséges utasok a komp.
Szóval hogyan lehet ellenőrizni, ha vagyunk tartományban bármilyen házak?
Nos, ismét, akkor használja a shuttle.distance funkció átadva
a szélességi és hosszúsági a pont hogy mi ellenőrizve.
>> De mik azok a célok?
Nos, a házak tömb, ha emlékszel A houses.js, tárolja a
szélességi és hosszúsági minden ház Egy asszociatív tömb, ahol minden
index a neve annak a háznak.
Azután, hogy távolítsa el az utasokat -
Nos, csak akkor, ha mi vagyunk a tartomány saját ház, hogy akarnak menni.
Tehát még egyszer, ne feledje, hogy az utasok tárolja a ház, hogy minden utas
akar menni.
Ha ezek hatókörén belül a ház, aztán vegye ki, hogy
utas shuttle.seats és állítsa helyüket a tömb null.
>> Most beszéljünk néhány extra funkciók hogy lehet végrehajtani
A CS50 Shuttle p-set.
Van egy pont, rendszer, amelyben nyomon követheti, hogy hány
rámutat a felhasználó.
A lemorzsolódás utasokat sikeres, akkor kap pontot.
De próbálja lehull utasok ahol nincs olyan ház a közelben
Nos, akkor kap büntetést érte.
Így talán szeretné nyomon követni A pontot egy globális változót.
>> Akkor végre talán egy időzítő, ahol a A felhasználónak van egy bizonyos mennyiségű
ideje, hogy vegye fel és dobja ki a Egyes utasok száma.
Talán még integrálni ezt A pontrendszer.
Vagy lehet szerkeszteni Chart úgy, hogy utasokat sorrendje házat.
Szóval ez valószínűleg egyfajta funkció a shuttle.seats.
>> Ön végre egy repülő funkciót, ahol, ha a felhasználó bemenetek a Konami
kódot, majd az űrsikló felemeli le a föld és az űrsikló repülni.
De egy biztos drop off, a legjobb, hogy az űrsikló földet a kerekek a
őrölt először.
Azt is végre teleportáció, ahol egy legördülő lista
épületek index.html.
És kiválasztja az egyik ilyen, a felhasználónak kell szállítani
hogy az épület az egyetemen.
OK, bár, utazni a a falak néhány
épületek az utat oda.
>> Azt is megváltoztathatja a sebességet a shuttle, lehetővé téve a felhasználó számára, hogy növelje
vagy csökkentheti a sebességet.
Talán szeretne egy globális változót nyomon követheti, hogy mennyi üzemanyagot a
Shuttle, csökkenő úgy, ahogy megy végig.
Miután hit nulla, bár az űrsikló nem lesz képes mozogni, ha már
üzemanyagot, esetleg egy gombbal, vagy is, hogy a saját benzinkút.
>> De ez biztosan nem kimerítő listát.
Nézd meg a spec a teljes lista, vagy esetleg javaslatot
a saját a TF.
Az ég a határ.
Ez az utolsó CS50 p-set, így szórakozni vele.
Ez CS50 Shuttle.
>> Azt kell mondanom, ez egy öröm hogy ezeket az Ön számára a
produkciós csapat.
És remélem, hogy már élvezni őket is.
A nevem Zamyla.
És ez volt CS50.