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.