[MUSIC PLAYING] SPEAKER 1: Nah, di sini kita, P set terakhir dalam CS50. Ucapkan selamat diri dari memiliki datang dari jauh sejak halo pertama Anda dunia dan mencetak piramida untuk Mario. Anda membuat sebuah website pekan lalu. Dan kita akan membuat satu sama lain minggu ini, salah satu yang memungkinkan Anda untuk berkeliling kampus Harvard, memilih up anggota staf CS50, dan membawa mereka kembali ke mereka rumah tinggal. Sekarang minggu lalu kami bekerja di PHP, bahasa sisi server. Untuk P set ini, kita mendapatkan diperkenalkan untuk JavaScript, yang merupakan bahasa sisi client. Jadi mari kita lihat beberapa kode distribusi yang diberikan kepada Anda untuk P set ini. Dalam folder JavaScript, akan ada menjadi sekelompok file JavaScript. Ada buildings.js, yang berisi array bangunan di sekitar Harvard kampus, dengan informasi mereka dan posisi. Houses.js adalah array dari Harvard rumah tinggal, dengan mereka lintang dan bujur. Passengers.js berisi array penumpang - anggota staf CS50 - bahwa Anda akan membawa kembali ke rumah tinggal mereka. Math3D.js, yang berisi banyak fungsi yang harus dilakukan dengan gerakan. Jika Anda berpikiran matematis, maka saya menyambut anda melihat. Tapi Anda tidak perlu memahami segala sesuatu di sana. Shuttle.js, yang berhubungan dengan gerakan pesawat itu. Dan index.html adalah halaman rumah di mana segala sesuatu terjadi, benar-benar, di mana pengguna berinteraksi dengan situs. Service.css adalah style sheet CSS, yang, di samping Twitter Bootstrap perpustakaan, kontrol bagaimana index.html terlihat. Dan kemudian kami juga memiliki service.js, yang berisi fungsi layanan untuk pesawat ulang-alik. Dan inilah di mana Anda akan menjadi mengisi beberapa untuk dos. Sekarang mari kita lihat benda-benda dan array asosiatif di JavaScript, yang untuk semua maksud dan tujuan yang dipertukarkan. Jika saya ingin membuat sebuah objek variabel disebut tongkat sihir, saya akan mendeklarasikan. Dan di dalam kurung kurawal tersebut saya akan menentukan inti adalah unicorn. Kayu adalah ceri. Dan panjangnya 13. Sekarang saya juga dapat mengakses nilai-nilai obyek menggunakan notasi array asosiatif. Inti indeks Jadi tongkat, saya dapat mengatur yang sama dengan unicorn, atau memeriksa bahwa, jika saya perlu. Atau aku bisa menggunakan operator dot. Wand dot kayu sama cherry, dan sebagainya, dan sebagainya. Jadi, Anda melihat bahwa array asosiatif dan objek dalam JavaScript akan menjadi dipertukarkan, dan akan datang sangat berguna. Kemudian kita melihat berbagai bangunan di buildings.js. Sekali lagi, array obyek. Jika saya ingin membuat sebuah array dari yang terbaik bangunan di kampus Harvard, kemudian Aku akan membuatnya sebagai berikut. Menggunakan notasi objek ini, di mana Saya menyimpan akar, nama, alamat, lintang, bujur dan untuk setiap satu objek bangunan. Mari kita cepat berbicara tentang variabel dalam JavaScript. Seperti PHP, variabel JavaScript yang lemah atau longgar diketik. Untuk membuat variabel lokal, Anda awalan nama variabel dengan V-A-R, var. Sekarang dalam JavaScript, fungsi akan membatasi ruang lingkup variabel. Jadi jika Anda memiliki sebuah variabel lokal dalam fungsi, maka fungsi lainnya tidak bisa mengaksesnya. Tapi tidak seperti C, loop dan kondisi tidak membatasi ruang lingkup variabel. Jadi bahkan jika Anda menyatakan hal itu dalam sebuah kondisi, seluruh fungsi akan memiliki akses ke sana. Sekarang tanpa var, variabel akan global. Jadi, jika Anda hanya menyatakan nama dan menetapkan nilai, maka variabel yang akan menjadi variabel global dalam JavaScript. Sekarang di rumah-rumah, kita memiliki asosiatif array objek tipe rumah, di mana setiap rumah hanya garis lintang dan bujur a. Kemudian kita memiliki penumpang array, yang merupakan array jenis objek penumpang. Jadi setiap penumpang memiliki nama pengguna, nama, dan rumah. Perhatikan bahwa saya melihat jenis penumpang, yang benar-benar hanya berarti bahwa setiap benda memiliki sepasang kunci nilai yang sama. Jadi setiap objek dari tipe penumpang memiliki nama pengguna, nama, dan rumah. Jadi apa yang kita butuhkan untuk lakukan untuk P set? Nah, kita perlu untuk memungkinkan pengguna untuk memilih up anggota staf, untuk menampilkan semua anggota staf yang sedang dalam pesawat kami, dan untuk menjatuhkan mereka. Dan kemudian kami juga akan berbicara tentang ekstra fitur yang dapat diterapkan untuk shuttle P set. Tapi mari kita bicara tentang pickup pertama. Wajah-wajah staf CS50 telah ditanam di seluruh kampus, di mana masing-masing wajah diimplementasikan sebagai tanda tempat di bumi 3D, dan sebagai penanda di peta 2D. Jadi ketika pengguna mengklik pickup tombol, kita ingin menambahkan sekitar penumpang untuk pesawat ulang-alik. Dan kami juga ingin menghapus tempat mereka menandai dari dunia, dan menghapus mereka penanda dari peta, menunjukkan bahwa mereka berada di pesawat kami sekarang. Jadi bagaimana kita mendeteksi jika penumpang berada dalam jangkauan pesawat kami? Nah, jarak fungsi - sehingga shuttle dot jarak, lewat di garis lintang dan bujur, akan menghitung jarak dari saat ini posisi antar-jemput ke titik yang Anda tentukan dengan diberikan lintang dan bujur. Jadi, Anda dapat menggunakan ini untuk menghitung jarak dari pesawat ulang-alik ke penumpang. Tapi bagaimana Anda tahu di mana para penumpang? Nah, di situlah kita harus mengedit fungsi populate. Mengisi tempat semua anggota staf dan penumpang ke dunia, dan ke dalam peta, tetapi tidak menyimpan lokasi mereka. Jadi mungkin Anda dapat menyimpan mereka menempatkan tanda dan spidol dalam beberapa array yang global. Sekarang sudah ada adalah array global menyimpan informasi dari penumpang. Toko penumpang Array masing-masing nama penumpang dan rumah mereka. Jadi mungkin Anda dapat menambahkan beberapa parameter ada ke objek penumpang. Untuk membantu kita mendeteksi semua penumpang dalam jangkauan pesawat kami, mari kita loop melalui semua penumpang di penumpang array. A untuk loop dalam JavaScript mungkin terlihat sesuatu seperti ini, sangat mirip dengan mereka untuk loop di C. Atau kita bisa menggunakan alternatif untuk struktur loop. Untuk var i di array, di mana saya masih akan indeks. Tapi Anda tidak perlu menentukan panjang array dot kondisi, dan saya plus plus. Lokasi setiap penumpang adalah diberikan oleh tempat tanda mereka. Tapi tempat mark tidak lintang dan bujur. Kita harus mengakses parameter dengan mendapatkan geometri, menggunakan get geometri pada tempat yang ditandai. Dan kemudian setelah kita memiliki geometri, mendapatkan baik lintang atau bujur, menggunakan fungsi-fungsi. Jadi sekarang kita tahu bagaimana untuk mendeteksi apakah penumpang berada dalam berbagai pesawat kami. Setelah kita memiliki orang-orang penumpang, kita akan ingin menambahkan penumpang yang dalam kisaran tersebut. Kami ingin memungkinkan mereka untuk naik, dan duduk di pesawat kami, tetapi hanya jika kita memiliki cukup ruang untuk mereka. Pesawat ulang-alik dot kursi array yang akan menunjukkan apakah kursi kosong, atau siapa di kursi itu. Jadi, jika kursi kosong, maka kursi yang akan null. Jadi iterate atas kursi array, memeriksa kursi kosong, menyimpan penumpang ke kursi tersebut sampai Anda tidak memiliki kursi lebih kosong. Dan sayangnya, setiap penumpang lain akan harus menunggu untuk kali pesawat datang sekitar. Setelah mereka mendapatkan pada pesawat ulang-alik, kita akan ingin untuk menghapus tanda tempat mereka, yang adalah foto mereka di dunia 3D. Jika saya ingin menghapus tempat mark p, maka saya akan mendapatkan semua fitur dari bumi saya, dari Google Earth, dan kemudian menghapus tempat tertentu menandai menggunakan fungsi removeChild. Kemudian yang terakhir, mari kita menghapus penanda, ikon pada peta 2D untuk setiap penumpang bahwa kita mengambil. Untuk menghapus penanda, m, maka aku akan hanya menjalankan m dot setMap null. Lakukan ini untuk setiap penumpang dalam jangkauan, dan Anda selesai pickup.