>> ZAMYLA CHAN: Nah, di sini kita, p-set terakhir dalam CS50.
Ucapkan tahniah kepada diri kamu daripada mempunyai datang setakat ini sejak Hello pertama anda
Alam dan Percetakan Up 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 ini p-set, kita mendapat diperkenalkan untuk JavaScript, yang merupakan
pelanggan bahasa sampingan.
Jadi mari kita lihat beberapa daripada kod pengedaran yang yang diberikan kepada
anda untuk ini p-set.
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 untuk membaca.
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
Shuttle tersebut.
Dan di sini di mana anda akan menjadi mengisi beberapa tugasan ini.
>> Sekarang mari kita lihat pada objek dan array bersekutu dalam JavaScript,
yang, untuk tujuan dan maksud, boleh ditukar.
Jika saya mahu membuat objek pembolehubah dipanggil tongkat, saya akan
mengisytiharkan ia.
Dan di dalam orang-orang pendakap kerinting, saya akan nyatakan, 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 wand.wood 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 ubah 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.
Kini, tanpa var, pembolehubah akan global.
Jadi jika anda hanya mengisytiharkan nama dan menetapkan nilai, maka pemboleh ubah yang
akan berubah-ubah global dalam JavaScript.
>> Sekarang, dalam rumah, kami mempunyai sebuah bersekutu pelbagai objek jenis tuan 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 pengguna nama, nama, dan sebuah rumah.
>> Perhatikan bahawa saya katakan jenis penumpang, yang benar-benar hanya bermakna
bahawa setiap objek mempunyai pasangan nilai utama sama.
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
Shuttle 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 yang 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 majlis itu, jadi shuttle.distance, lulus dalam
latitud dan longitud, akan mengira jarak dari kedudukan semasa
ulang-alik ke titik yang anda tentukan paras 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 penumpang ke dalam dunia
dan ke dalam peta, tetapi tidak menyimpan lokasi mereka.
Jadi mungkin anda boleh menyimpan mereka meletakkan tanda dan penanda
di beberapa pelbagai global.
>> Kini, terdapat 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 kami
ulang-alik, gelung yang disewakan 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 i masih indeks, tetapi anda tidak perlu
nyatakan array.length yang keadaan dan i + +.
>> 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, dan kemudian sebaik sahaja kami mempunyai geometri, mendapatkan
sama ada latitud atau longitud 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 dalam pengangkutan ulang-alik kami, tetapi hanya
jika kita mempunyai ruang yang cukup kepada mereka.
>> Yang shuttle.seats 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 ke bawah.
>> 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.setMap null.
Adakah ini untuk mana-mana penumpang dalam liputan, dan anda selesai pikap.
Fungsi Carta harus memaparkan semua penumpang yang berada dalam anda
ulang-alik, dan tempat duduk kosong jika kosong.
Jadi carta perlu melelar lebih shuttle.seats, memaparkan
maklumat penumpang bagi setiap indeks, dan tempat duduk kosong jika indeks yang null.
>> Sekarang jika teks HTML diletakkan di dalam sebuah JavaScript berubah-ubah, maka dengan menggunakan
document.getElementByID, carta boleh mengedit HTML dalaman yang diberikan
elemen dengan memperuntukkan HTML teks kepada
document.getElementByID dalaman HTML berubah-ubah.
Apabila pengguna klik butang Drop Off dalam index.html, ia akan menelefon
fungsi dipulangkan.
Dan ia adalah tugas kita untuk melaksanakan itu.
>> Dalam dipulangkan, kami akan mahu mengeluarkan apa-apa penumpang dari perkhidmatan ulang-alik hanya jika
kita berada dalam pelbagai destinasi mereka, rumah kediaman mereka.
Jadi dipulangkan perlu menyemak sama ada ulang-alik adalah dalam lingkungan mana-mana
rumah, dan mengeluarkan apa-apa yang diperlukan penumpang dari ulang-alik.
Jadi bagaimana kita memeriksa jika kita dalam pelbagai mana-mana rumah?
Nah, sekali lagi, kami akan menggunakan shuttle.distance fungsi, lulus dalam
latitud dan longitud yang bahawa kita memeriksa menentang.
>> Tetapi apa yang adalah mereka mata?
Nah, pelbagai rumah-rumah itu, jika anda ingat dalam houses.js, menyimpan
latitud dan longitud bagi setiap rumah di pelbagai bersekutu, di mana setiap
index adalah nama rumah itu.
Kemudian untuk mengeluarkan penumpang -
dengan baik, hanya jika kita berada dalam lingkungan mereka rumah yang mereka mahu pergi ke.
Jadi sekali lagi, ingat bahawa penumpang menyimpan rumah yang setiap penumpang
mahu pergi ke.
Jika mereka berada dalam liputan mereka rumah, maka kami akan memadam yang
penumpang dari shuttle.seats dan set kedudukan mereka dalam array untuk nol.
>> Sekarang mari kita bercakap tentang beberapa ciri-ciri tambahan yang boleh dilaksanakan di
yang CS50 Shuttle p-set.
Ada sistem mata di mana anda menjejaki berapa banyak
menunjukkan pengguna mempunyai.
Untuk menjatuhkan luar penumpang berjaya, mereka boleh mendapatkan mata.
Tetapi kerana cuba menurunkan penumpang di mana tidak ada mana-mana rumah yang berhampiran,
dengan baik, mereka boleh dihukum untuk itu.
Jadi mungkin anda mahu untuk mengesan mata dalam pembolehubah global.
>> Anda boleh melaksanakan mungkin pemasa, di mana pengguna mempunyai sejumlah
masa untuk mengambil dan menurunkan satu sebilangan penumpang.
Mungkin juga mengintegrasikan ini dengan sistem mata.
Atau anda boleh Ubah Carta seperti yang penumpang disusun mengikut rumah.
Supaya mungkin akan menjadi yang amat berfungsi untuk shuttle.seats.
>> Anda boleh melaksanakan ciri terbang, di mana jika pengguna input yang Konami
kod, maka ulang-alik lif kira tanah dan pengangkutan ulang-alik yang boleh terbang.
Tetapi bagi penurunan yang selamat luar, terbaik untuk membuat ulang-alik tanah roda ke atas
tanah pertama.
Anda juga boleh melaksanakan teleportation, di mana anda membuat drop down senarai
bangunan index.html.
Dan memilih salah seorang daripada mereka, yang pengguna akan dihantar ke
bahawa bangunan di kampus.
OK, walaupun, untuk perjalanan melalui dinding beberapa
bangunan dalam perjalanan anda di sana.
>> Anda juga boleh menukar kelajuan ulang-alik, yang membolehkan pengguna untuk meningkatkan
atau mengurangkan kelajuan.
Mungkin anda mahu berubah-ubah global untuk menjejaki berapa banyak bahan api
ulang-alik mempunyai, mengurangkan sebagai anda pergi bersama-sama.
Sebaik sahaja anda memukul sifar, walaupun, ulang-alik tidak akan dapat bergerak kecuali anda telah
refueled, mungkin menggunakan butang, atau juga membuat stesen gas anda sendiri.
>> Tetapi itu sudah tentu tidak senarai yang lengkap.
Semak spec untuk penuh senarai, atau mungkin mencadangkan
anda sendiri untuk TF anda.
Langit adalah had.
Ini adalah CS50-p anda yang terakhir ditetapkan, jadi berseronok dengannya.
Ini adalah CS50 Shuttle.
>> Saya ada untuk mengatakan, ia telah keseronokan membuat ini untuk anda dengan
pasukan pengeluaran.
Dan saya berharap bahawa anda telah menikmati mereka, juga.
Nama saya Zamyla.
Dan ini adalah CS50.