[MUZIK Bermain] SPEAKER 1 Well, di sini kita, set P lepas di CS50. Ucapkan tahniah kepada diri kamu daripada mempunyai datang setakat ini sejak hello pertama anda dunia dan mencetak piramid untuk Mario. Anda membuat laman web minggu lepas. Dan kita akan membuat satu sama lain minggu ini, salah satu yang membolehkan anda untuk memandu di sekitar kampus Harvard, mengambil sehingga kakitangan CS50, dan membawa mereka kembali kepada mereka rumah-rumah kediaman. Sekarang minggu lepas kami bekerja dalam PHP, bahasa sebelah pelayan. Untuk set P ini, kita mendapat diperkenalkan untuk JavaScript, yang merupakan pelanggan bahasa sampingan. Jadi mari kita lihat beberapa daripada kod pengedaran yang yang diberikan kepada anda untuk set P ini. Dalam folder JavaScript, ada akan menjadi sekumpulan fail JavaScript. Ada buildings.js, yang mengandungi bangunan-bangunan di sekitar Harvard kampus, dengan maklumat mereka dan kedudukan. Houses.js adalah pelbagai Harvard rumah-rumah kediaman, dengan mereka latitud dan longitud. Passengers.js mengandungi pelbagai penumpang - ahli-ahli kakitangan CS50 - bahawa anda akan membawa kembali kepada rumah-rumah kediaman mereka. Math3D.js, yang mengandungi banyak fungsi kaitan dengan pergerakan itu. Jika anda berfikiran matematik, maka saya mengalu-alukan anda melihat. Tetapi anda tidak perlu memahami segala-galanya di sana. Shuttle.js, yang memperkatakan pergerakan pesawat itu. Dan index.html adalah halaman rumah di mana semua yang berlaku, benar-benar, di mana pengguna berinteraksi dengan laman web ini. Service.css adalah lembaran gaya CSS, yang, sebagai tambahan kepada Twitter Perpustakaan Bootstrap, kawalan bagaimana kelihatan index.html. Dan kemudian kita juga mempunyai service.js, yang mengandungi fungsi-fungsi perkhidmatan untuk ulang-alik. Dan di sini di mana anda akan menjadi mengisi beberapa untuk dos. Sekarang mari kita lihat pada objek dan array bersekutu dalam JavaScript, yang bagi semua maksud dan tujuan boleh ditukar. Jika saya mahu membuat objek pembolehubah dipanggil tongkat, saya akan mengisytiharkan ia. Dan di dalam orang-orang pendakap kerinting saya akan menentukan teras adalah Unicorn. Kayu ceri. Dan panjang ialah 13. Sekarang saya juga boleh mengakses nilai-nilai objek menggunakan notasi array bersekutu. Jadi tongkat teras indeks, saya boleh menetapkan yang sama dengan Unicorn, atau pastikan, jika saya perlukan. Atau saya boleh menggunakan operator titik. Kayu tongkat dot sama ceri, dan sebagainya, dan sebagainya. Jadi anda lihat bahawa array bersekutu dan objek dalam JavaScript akan menjadi ditukar, dan kehendak datang dalam agak berguna. Kemudian kami melihat bangunan-bangunan dalam buildings.js. Sekali lagi, pelbagai objek. Jika saya mahu membuat pelbagai terbaik bangunan di kampus Harvard, maka Saya akan membuat ia seperti berikut. Menggunakan notasi objek ini, di mana Saya menyimpan akar, nama, alamat, latitud, longitud dan bagi tiap-tiap objek bangunan. Mari cepat bercakap tentang pembolehubah dalam JavaScript. Seperti PHP, JavaScript pembolehubah adalah lemah atau longgar ditaip. Untuk membuat pembolehubah tempatan, anda awalan nama pembolehubah dengan V-A-R, var. Sekarang dalam JavaScript, fungsi akan menghadkan skop pembolehubah. Jadi jika anda mempunyai pembolehubah tempatan dalam fungsi, maka fungsi-fungsi lain tidak boleh mengaksesnya. Tetapi tidak seperti C, gelung dan syarat yang tidak melakukan menghadkan skop pembolehubah. Jadi, walaupun anda mengisytiharkan ia di dalam sebuah keadaan, seluruh fungsi akan mempunyai akses kepadanya. Sekarang tanpa var, pembolehubah akan global. Jadi jika anda hanya mengisytiharkan nama dan menetapkan nilai, maka pemboleh ubah yang akan berubah-ubah global dalam JavaScript. Kini di rumah, kami mempunyai sebuah bersekutu pelbagai objek jenis rumah, di mana setiap rumah hanya latitud yang dan longitud yang. Kemudian kita mempunyai penumpang pelbagai, yang merupakan satu pameran jenis objek penumpang. Jadi setiap penumpang mempunyai nama pengguna, nama, dan sebuah rumah. Perhatikan bahawa saya melihat jenis penumpang, yang benar-benar hanya bermakna bahawa setiap objek mempunyai sama pasangan nilai utama. Jadi setiap objek jenis penumpang mempunyai nama pengguna, nama, dan sebuah rumah. Jadi, apa yang kita perlu lakukan untuk P set? Nah, kita perlu untuk membolehkan pengguna untuk memilih sehingga ahli-ahli kakitangan, untuk memaparkan semua ahli-ahli kakitangan yang kini ulang-alik kami, dan untuk menggugurkan mereka di luar. Dan maka kita juga akan bercakap mengenai tambahan ciri-ciri yang boleh dilaksanakan untuk pesawat P set. Tetapi mari kita bercakap tentang pikap pertama. Wajah-wajah kakitangan CS50 telah ditanam di seluruh kampus, di mana setiap muka dilaksanakan sebagai tanda tempat di bumi 3D, dan sebagai penanda di peta 2D. Oleh itu, apabila pengguna klik pikap butang, kita mahu menambah berdekatan penumpang untuk ulang-alik. Dan kita juga mahu mengeluarkan tempat mereka menandakan dari dunia, dan mengeluarkan mereka penanda dari peta, yang menunjukkan bahawa mereka dalam kapal kita sekarang. Jadi bagaimana kita mengesan jika penumpang berada dalam liputan perkhidmatan ulang-alik kita? Nah, jarak fungsi - jadi ulang-alik jarak dot, lulus dalam latitud dan longitud, akan mengira jarak dari semasa kedudukan ulang-alik ke menunjukkan yang anda nyatakan dengan diberikan latitud dan longitud. Jadi, anda boleh menggunakan ini untuk mengira jarak dari ulang-alik ke penumpang. Tetapi bagaimana anda tahu di mana penumpang adalah? Nah, itu di mana kami akan perlu mengedit fungsi mengisi. Mengisi tempat semua anggota kakitangan dan penumpang ke dunia, dan ke dalam peta, tetapi tidak menyimpan lokasi mereka. Jadi mungkin anda boleh menyimpan mereka meletakkan tanda dan penanda di beberapa pelbagai global. Sekarang ada sudah adalah pelbagai global menyimpan maklumat daripada penumpang. Kedai-kedai pelbagai penumpang setiap nama penumpang dan rumah mereka. Jadi mungkin anda boleh menambah beberapa parameter ada kepada objek penumpang. Untuk membantu kami mengesan semua penumpang dalam jarak ulang-alik kita, mari kita gelung melalui semua penumpang dalam pelbagai penumpang. A untuk gelung dalam JavaScript mungkin kelihatan sesuatu seperti ini, hampir sama dengan mereka untuk gelung dalam C. Atau kita boleh menggunakan alternatif untuk struktur gelung. Untuk var i dalam array, di mana saya masih indeks. Tetapi anda tidak perlu untuk menentukan panjang pelbagai dot keadaan, dan saya plus plus. Lokasi setiap penumpang adalah diberikan oleh tanda tempat mereka. Tetapi tanda tempat itu tidak di latitud dan longitud. Kita perlu mengakses mereka parameter oleh mendapatkan geometri, menggunakan get geometri pada tanda tempat itu. Dan kemudian sebaik sahaja kami mempunyai geometri, mendapatkan sama ada latitud atau longitud, dengan menggunakan fungsi-fungsi itu. Jadi sekarang kita tahu bagaimana untuk mengesan sama ada penumpang berada dalam pelbagai perkhidmatan ulang-alik kami. Apabila kita mempunyai orang-orang penumpang, kita akan mahu menambah mana-mana penumpang yang dalam julat itu. Kami mahu membenarkan mereka untuk naik, dan mengambil tempat duduk pada kapal kita, tetapi hanya jika kita mempunyai ruang yang cukup untuk mereka. Tempat duduk ulang-alik dot array akan menunjukkan sama ada tempat duduk kosong, atau yang dalam tempat itu. Jadi, jika kerusi yang kosong, maka tempat duduk yang akan batal. Jadi melelar lebih pelbagai tempat duduk, memeriksa tempat duduk kosong, menyimpan penumpang ke kerusi-kerusi sehingga anda tidak mempunyai apa-apa kerusi lebih kosong. Dan malangnya, mana-mana penumpang lain perlu menunggu lain kali ulang-alik datang sekitar. Sebaik sahaja mereka mendapatkan di ulang-alik, kita akan mahu untuk membuang tanda tempat mereka, yang adalah gambar mereka di dunia 3D. Jika saya mahu membuang tanda tempat p, maka saya akan mendapat semua ciri-ciri dari bumi saya, dari Google Earth, dan kemudian keluarkan bahawa tempat tertentu menandakan menggunakan fungsi removeChild itu. Kemudian akhir sekali, mari kita membuang penanda, ikon pada peta 2D bagi apa-apa penumpang bahawa kita meningkat. Untuk mengeluarkan penanda, m, maka saya akan hanya melaksanakan m dot setMap null. Adakah ini untuk mana-mana penumpang dalam liputan, dan anda selesai pikap.