ZAMYLA Chandler: Cóż, jesteśmy tutaj, Ostatnia p-set w CS50. Gratuluję sobie z konieczności tak daleko od pierwszego Halo Światy i drukowanie się Piramidy w Mario. Zrobiłeś stronę internetową w zeszłym tygodniu. I będziemy robić jeszcze jeden w tym tygodniu, który pozwala na jazdy po kampusie Harvardu, zbierając się pracowników CS50 i sprowadzając je z powrotem do ich domów mieszkalnych. Teraz, w zeszłym tygodniu pracowaliśmy w PHP, język po stronie serwera. W tym p-set, mamy coraz wprowadzono do JavaScript, który jest po stronie klienta język. Warto więc spojrzeć na niektóre z Kod dystrybucji, który jest przekazywane można do tego p-set. W folderze JavaScript, nie będzie być kilka plików JavaScript. Jest buildings.js, który zawiera Tablica budynków wokół Harvard Kampus z ich informacji i pozycji. Houses.js jest tablicą Harvardzie Domy mieszkalne z ich szerokości i długości geograficzne. Passengers.js zawiera tablicę pasażerów, pracowników CS50 że będziesz przynosząc z powrotem do ich domy mieszkalne. Math3D.js, że zawiera wiele funkcje turystyczne z ruchem. Jeśli jesteś matematycznie poglądach, a następnie I zapraszamy do obejrzenia. Ale nie trzeba rozumieć wszystko tam jest. Shuttle.js, która zajmuje się ruch promu. I index.html jest strona główna, gdzie wszystko dzieje się naprawdę, gdzie interakcji użytkownika z witryną. Service.css jest arkusz stylów CSS, który oprócz Twitter Biblioteka, kontrole Bootstrap jak index.html wygląd. A potem mamy również service.js, które zawiera funkcje usługowe dla transfer. A tu, gdzie masz zamiar być wypełnienie niektórych do-do jest. Teraz rzućmy okiem na obiekty i Tablice asocjacyjne w JavaScript, który dla wszystkich zamiarów i celów, są wymienne. Gdybym chciał utworzyć obiekt, zmienna zwana różdżka, chciałbym zadeklarować. I wewnątrz tych klamrach, chciałbym określić, rdzeń jest jednorożec, drewno jest wiśnia, a długość 13. Teraz można również uzyskać dostęp do wartości obiektów wykorzystujących Zapis tablicy asocjacyjnej. Więc różdżka Bazowy indeks, można ustawić że równe jednorożec, lub sprawdzić, czy muszę. Czy mogę użyć operatora kropki wand.wood równa wiśni i tak dalej, i tak dalej. Więc widać, że tablice i asocjacyjne Obiekty w JavaScript będą wymienne i wola są w bardzo przydatny. Następnie widzimy szereg budynków w buildings.js, ponownie, tablica obiektów. Gdybym chciał zrobić tablicę najlepiej budynków na terenie kampusu, a następnie Harvard Chciałbym zrobić to w następujący sposób. Korzystanie z tej notacji obiektu, gdzie Przechowywać roota, nazwę, adres, Szerokość i długość dla każdego pojedynczy obiekt budynku. Niech szybko porozmawiać o zmiennych w JavaScript. Jak zmienne PHP, JavaScript są słabo lub luźno wpisane. Aby utworzyć zmienną lokalną, prefiks nazwa zmiennej z V-A-R, var. Teraz, w JavaScript, funkcje będzie ograniczają zakresu zmiennych. Więc jeśli masz zmiennej lokalnej w ciągu funkcję, a następnie inne funkcje nie można uzyskać do niego dostęp. Ale w przeciwieństwie do C, pętle i warunki nie ograniczają zakresu zmiennej. Więc nawet jeśli zadeklarować wewnątrz warunek, cała funkcja będzie mieć do niego dostęp. Teraz, bez var, zmienna będzie globalny. Więc jeśli po prostu zadeklarować nazwę i przypisać wartość, to zmienna będzie zmienna globalna w JavaScript. Teraz, w domach, mamy asocjacyjną tablica obiektów typu gospodarza, gdzie każdy dom jest tylko szerokość i długości geograficznej. Następnie mamy pasażerów Tablica, która jest tablicą typu obiekt pasażera. Więc każdy pasażer ma użytkownika Imię, nazwisko i dom. Zauważ, że mówię o rodzaju Pasażer, który tak naprawdę oznacza że każdy obiekt ma same pary wartość klucza. Więc każdy obiekt typu pasażera ma nazwa użytkownika, nazwa i dom. Więc co trzeba zrobić dla p-set? Cóż, musimy umożliwić użytkownikom wybrać się pracowników, aby wyświetlić wszystkie członkowie personelu, które są obecnie w Nasz transport, i je tam zostawić. A potem będziemy również mówić o dodatkowe Funkcje, które mogą być realizowane na transfer z p-set. Ale porozmawiajmy o pickup pierwszy. Twarze personelu CS50 zostały posadzone w całym kampusie, gdzie każdy Twarz jest realizowany jako znak miejsca na 3D Ziemi, i jako Znacznik na mapie 2D. Tak więc, gdy użytkownik kliknie Pickup przycisk, chcemy dodać w pobliżu pasażerów do promu. I chcemy też usunąć swoje miejsce oznaczyć od świata i usunąć ich Znacznik z mapy, wskazując oni są teraz w naszym busem. Więc w jaki sposób wykryć, czy pasażerowie znajduje się w zasięgu naszego promu? Cóż, odległość funkcja, więc shuttle.distance, przekazując szerokość i długość geograficzna, obliczy odległość od aktualnej pozycji z promu do tego stopnia, że określić, że biorąc pod uwagę z szerokości i długości geograficznej. Więc można to wykorzystać do obliczenia odległość od promu do pasażerów. Ale jak wiesz, gdzie pasażerowie są? Cóż, to gdzie będziemy musieli edytować funkcję wypełnić. Wypełnianie miejscowościom wszystkich pracowników w pasażerów w świat i na mapę, ale nie przechowywanie ich lokalizację. Więc może można przechowywać ich umieszczenie znaków i markery w jakiejś globalnej tablicy. Teraz nie jest już globalna tablica przechowywania informacji od pasażerów. Sklepy pasażerowie tablicy każdy nazwisko pasażera i ich dom. Więc może można dodać kilka parametrów tam przedmiotów pasażerskich. Aby pomóc nam wykryć wszystkich pasażerów w zasięgu naszych transport, pętla Miejmy przez wszystkie pasażerów w tablicy pasażerów. Do pętli w JavaScript może wyglądać coś takiego, bardzo podobne do tych, do pętli w C lub możemy użyć Alternatywą dla struktury pętli, dla var i na tablicy, gdzie nadal będę indeks, ale nie musisz się określić Array.length Stan i ja + +. Lokalizacja Każdy pasażer jest podane przez ich znaku miejsce. Ale znak nie jest miejsce szerokość i długość geograficzną. Mamy dostęp do tych parametrów przez coraz geometrię, za pomocą GET geometrii na znaku miejsca, a następnie raz mamy geometrii, coraz albo szerokość lub długość korzystania z tych funkcji. Więc teraz wiemy jak wykryć, czy pasażerowie są w Zakres naszego promu. Kiedy już mamy tych pasażerów, będziemy chcesz dodawać żadnych pasażerów, które są wewnątrz tego zakresu. Chcemy, aby mogli wskoczyć i wziąć Użytkowników na naszej autobus, ale tylko jeśli mamy wystarczająco dużo miejsca dla nich. Tablica shuttle.seats wskaże czy fotele są puste, lub kto jest na tym siedzeniu. Więc jeśli gniazdo jest puste, a następnie że siedziba będzie null. Więc iteracyjne nad tablicy miejsc, sprawdzanie pustych miejsc, przechowywania pasażerów do tych miejsc aż do Ciebie Nie mamy żadnych więcej pustych miejsc. I niestety, żadnych innych pasażerów będą musieli czekać na Następnym razem transfer przychodzi. Kiedy dostać się na prom, będziemy chcieli usunąć swoje piętno miejsce, które jest ich zdjęcie w świecie 3D. Gdybym chciał usunąć miejsce znak p, następnie chciałbym uzyskać wszystkie funkcje z mojej ziemi, z Google Earth, a następnie usunąć tego konkretnego miejsca oznaczyć za pomocą funkcji removeChild. Wtedy wreszcie, to usunięcie znacznika, Ikona na mapie 2D, dla każdego pasażerów, które odbierają. Aby usunąć znacznik m, wtedy będę wystarczy wykonać m.setMap null. Zrób to dla pasażerów znajdujących się w zasięgu, i skończysz pickup. Funkcja wykresu powinien wyświetlić wszystkie pasażerów, które Państwo transfer, a puste miejsce, jeśli pusty. Więc wykres powinien iteracyjnego shuttle.seats, wyświetlając informacji pasażerskiej dla każdego wskaźnika, i puste miejsce, jeżeli indeks jest null. Teraz, jeśli tekst HTML jest umieścić wewnątrz JavaScript zmienna, to przy pomocy document.getElementById, wykres może edytować wewnętrzną kodu HTML, który dany Element przypisując Tekst HTML document.getElementById wewnętrzna zmienna HTML. Gdy użytkownik kliknie przycisk zasnąć w index.html, to będzie zadzwonić Funkcja godzina odbioru. I to jest nasze zadanie do wykonania, które. W dropoff, będziemy chcieli, aby usunąć wszelkie pasażerów z promu tylko wtedy, my w zakresie ich przeznaczenia, ich dom mieszkalny. Więc Dropoff będzie musiał sprawdzić, czy Transfer jest w zakresie od jakichkolwiek Domy i usunąć wszelkie potrzebne pasażerów z promu. Jak więc sprawdzić, czy jesteśmy w zakresie od wszelkich domach? Cóż, po raz kolejny, będziemy korzystać z funkcję shuttle.distance, przekazując długość i szerokość geograficzna punktu że jesteśmy sprawdzaniu. Ale co to są te punkty? Cóż, tablica domy, jeśli pamiętać, w houses.js, przechowuje szerokość i długość każdego domu w Tablica asocjacyjna, gdzie każdy Indeks jest nazwa tego domu. Następnie usunąć pasażerów - dobrze, tylko wtedy, gdy jesteśmy w zasięgu ich dom, że chcą, aby przejść do. Więc znowu, pamiętaj, że pasażerowie przechowuje w domu, że każdy pasażer chce iść. Jeśli są w zasięgu ich dom, a następnie usuniemy że Pasażer z shuttle.seats i zestawem ich pozycja w tablicy na null. Teraz porozmawiajmy o niektórych dodatkowych funkcji , które mogą być realizowane w CS50 transfer p-set. Tam jest punkt w którym system śledzić, jak wiele wskazuje użytkownik posiada. Na zostawieniu pasażerów powodzeniem, mogą uzyskać punkty. Ale próbuje zasnąć pasażerów , gdzie nie ma żadnych pobliżu domu, dobrze, może się za to ukarany. Więc może chcesz śledzić punkty w zmiennej globalnej. Być może można wdrożyć, gdzie zegar Użytkownik ma pewną czas, aby podnieść i upuść off pewna liczba pasażerów. Może nawet zintegrować ten z układu punktów. Lub można edytować tabelę, tak że pasażerowie są klasyfikowane według domu. Tak, że będzie prawdopodobnie sortowania funkcjonować do shuttle.seats. Można zaimplementować latający funkcji, gdzie jeśli użytkownik wprowadza się Konami Kod, a następnie unosi się transfer teren i transfer może latać. Ale do bezpiecznej zasnąć, najlepiej, aby Transfer wylądować na swoje koła uziemić pierwszy. Można również realizować teleportacji, gdzie można zrobić rozwijaną listę w dół budynki w pliku index.html. I wybierając jedną z tych, Użytkownik będzie transportowany do że budynek na terenie kampusu. OK, chociaż, aby podróżować przez Ściany niektórych budynki na swojej drodze tam. Można również zmienić prędkość transport, co pozwala użytkownikowi na zwiększenie lub zmniejszyć prędkość. Może chcesz zmienną globalną śledzić, ile paliwa Transfer ma, zmniejszając to jak iść. Po trafieniu do zera, chociaż, transfer nie będzie w stanie poruszać się o ile nie zatankowany, być może za pomocą przycisku lub nawet tworzyć własne stacja. Ale to na pewno nie jest wyczerpująca lista. Sprawdź specyfikację do pełna listy, a może zaproponować własne do TF. Niebo jest granicą. To twoja ostatnia CS50 p-set, więc baw się z nim. To był CS50 transfer. Muszę powiedzieć, że to była przyjemność co to dla ciebie z zespół produkcyjny. I mam nadzieję, że masz korzystać z nich, jak również. Nazywam się Zamyla. I to był CS50.