ZAMYLA CHAN:さて、ここで我々は、 最後のP-セットCS50に。 持っていることから自分自身を祝福 ここまで来て最初こんにちは以来 世界と印刷のアップ マリオのためのピラミッド。 あなたは先週、ウェブサイトを作りました。 そして、我々は別のものを作ることになるだろう 今週、あなたがすることを可能にする1 ピッキング、ハーバード大学のキャンパスをドライブ CS50スタッフと最高 戻って自分のためにそれらを持って来る 住宅。 さて、先週我々は、PHPで働いていた サーバー側の言語。 このpのセットのために、我々は導入取得している されるJavaScriptに クライアント側の言語。 それでは、いくつか見てみましょう に提供の流通コード このpセットのためのあなた。 JavaScriptのフォルダに、そこに意志 JavaScriptファイルの束であること。 含まれていますbuildings.jsがあります ハーバード大学の周りの建物の配列 自分の情報を使用したキャンパス と位置。 Houses.jsはハーバードの配列です 彼らの持つ住宅 緯度と経度。 Passengers.jsはの配列が含まれています 乗客、CS50スタッフ あなたがに持ち帰ることだろうと 彼らの住宅。 を多く含むMath3D.js、 運動とは何の機能。 あなたは数学的に志向している場合は、 私はあなたが見てみるために歓迎する。 しかし、あなたが理解する必要はありません そこにすべてのもの。 扱うShuttle.js、 シャトルの動き。 とindex.htmlのホームページです すべては、本当に、どうなる場所 ユーザーがサイトと対話している。 Service.cssは、CSSスタイルシートで、 Twitterのに加えている ブートストラップ·ライブラリ、コントロール どのようにindex.htmlに見える。 そして、我々はまた、service.jsを持っている のためのサービス機能が含まれています シャトル。 あなたがあることを行っている場所とここにある のto-doのいくつかを記入。 それでは、オブジェクトを見てみましょうと、 JavaScriptで連想配列、 これは、すべての意図や目的のために、 交換可能です。 私は、オブジェクト変数作りたい場合 私は、杖になると呼ばれる それを宣言します。 そして、それらの中括弧内に、私はだろう コアは、木材ユニコーンで、指定 チェリーであり、長さは13である。 今、私はまた、値にアクセスすることができます 使用してオブジェクトの 連想配列表記法。 私が設定することもできますので、杖屈折率コア、 ユニコーンに等しいこと、または 私は必要がある場合はそれを確認してください。 または私はドット演算子を使用することができます wand.wood桜に等しく、 などなど。 だから、連想配列が分かりや JavaScriptでのオブジェクトがあることを行っている 交換可能、とウィル かなり便利になる。 その後、我々は建物の配列を参照してください。 buildings.jsにおいて、 再び、オブジェクトの配列。 私は最高の配列を作りたい場合 その後、ハーバード大学キャンパスの建物、 次のように私はそれを作るだろう。 このオブジェクトの表記法を使用して、どこで 私は根、名前、住所を格納し、 すべての緯度、および経度 つの建物オブジェクト。 のはすぐに変数についてお話しましょう JavaScriptで。 PHP、JavaScriptの変数のように 弱いまたは緩く型付けされています。 ローカル変数を作成するには、接頭辞 V-A-R、VAR変数名。 今、JavaScriptでは、関数は、意志 変数の範囲を制限する。 だから、内のローカル変数を持っている場合 機能は、他の機能 それにアクセスすることはできません。 しかし、Cとは異なり、ループや条件にはありません 変数の範囲を制限する。 だから、Aの内部でそれを宣言する場合でも、 条件、関数全体の意志 それにアクセスすることができます。 今、VARなしで、変数 グローバルになります。 あなただけの名前を宣言し、もしそうであれば 値を割り当て、その変数 グローバル変数になります JavaScriptで。 今、家で、我々は連想を持っている ホストTypeオブジェクトの配列。ここで すべての家はちょうど緯度 と経度。 その後、我々は乗客を持っている 配列になって、 オブジェクト型の乗客の。 したがって、すべての乗客には、ユーザーがある 名前、名前、および家。 私はタイプの言っていることに注意してください 実際には意味の乗客、 すべてのオブジェクトが持っていることを 同じキーと値のペア。 そうタイプの乗用車のすべてのオブジェクトがあります ユーザー名、名前、および家。 だから我々はには何が必要なのですか P-セットのために何が? まあ、我々は、ユーザーが選択できるようにする必要があります スタッフメンバーまで、すべてを表示するには に現在あるスタッフメンバー 私たちのシャトルバス、それらをオフにドロップします。 そして、我々はまた、余分な話をします のために実装できる機能 シャトルP-セット。 しかし、ここでは最初のピックアップについてお話ししましょう​​。 CS50スタッフの顔があった ここで、それぞれ、すべてのキャンパスの上に植え 顔が場所マークとして実装されています 3D地球上などの 2Dマップ上のマーカー。 ユーザがピックアップをクリックしたときに ボタン、我々は、近く追加する シャトルバスの乗客。 そして、我々はまた、その場所を削除したい 世界からマークして削除し、その それを示すマップからのマーカー、 彼らは今、私たちのシャトルにいる。 では、どのように検出しないかの乗客 私たちのシャトルの範囲内にある? さて、関数の距離なので、 渡しshuttle.distance、 緯度と経度は、計算されます 現在位置からの距離 その時点までのシャトルの あなたはそれが与えられたとの指定 緯度と経度。 だから、計算するためにこれを使用することができます へのシャトルからの距離 乗客。 しかし、どのようにどこで知っていますか 乗客は何ですか? 我々はする必要がありますどこでまあ、それはだ 移入機能を編集します。 場所のスタッフのすべてを取り込む 世界への乗客中 そしてマップにしませんが、 その場所に保管します。 だから、おそらくあなたは自分を保存することができます マークやマーカーを配置 いくつかのグローバル配列内の。 今、すでに世界的な配列があります 乗客からの情報を記憶する。 乗客·アレイには、各 乗客の名前と彼らの家。 だから、多分あなたは、いくつかのパラメータを追加することができます そこに乗客のオブジェクトに。 私たちは、乗客のすべての検出に役立つ 私達の範囲内 のすべてを、シャトル、レッツ·ループ 乗客·アレイ内の乗客。 JavaScriptでループが見えるかもしれません と非常に似て、このようなもの、 Cのforループのものあるいは我々が使用することができます 例えば、ループ構造のための代替 私はまだなり、アレイ内のVAR I インデックスがありますが、する必要はありません Array.lengthとを指定する 条件およびI + +。 すべての乗客の場所にあります。 その場所のマークが与えられ。 しかし、場所のマークがありません 緯度と経度。 我々は、で、これらのパラメータにアクセスする必要が GETを使用して、ジオメトリを取得 場所マークを幾何学、その後、 我々は、ジオメトリを取得したら、取得 緯度や経度のいずれか これらの機能を使用して。 だから今我々は、かどうかを検出する方法を知っている 乗客は内にある 私たちのシャトルの範囲。 我々は、これらの乗客を取得したら、我々はよ ているすべての乗客を追加する その範囲内。 我々は彼らが上にホップして取ることができるようにしたい 私たちのシャトルバスで席だけ 我々は彼らに十分なスペースがある場合。 shuttle.seats配列が表示されます 席が空であるかどうか、または 誰がその席にあります。 そう座席が、その後、空の場合 その座席はnullになります。 そのため、座席の配列を反復 収納、空席の確認 するまで、それらの席に乗客 これ以上空席がありません。 残念ながら、他の乗客 を待つ必要があります 次回シャトルがダウンしています。 彼らは、シャトルに乗ると、私たちはお勧めします その場所のマークを削除するには、どの 3Dの世界での写真です。 私はその場所のマークPを削除したい場合は、 私はすべての機能になるだろう 私の地球から、グーグルアースから、 して、その特定の場所を削除 removeChildの機能を使用してマークします。 そして、最後に、のは、マーカーを削除しましょう​​、 任意のための2Dマップ上のアイコン、 私たちが拾っている乗客。 マーカーMを削除するには、私はよ ただm.setMapヌルを実行します。 範囲内の任意の乗客のためにこれを行う、 あなたはピックアップを終えた。 チャート機能は、すべてを表示する必要があります あなたの内にある乗客の シャトルバス、空席、空の場合。 だから、チャートは反復処理する必要があり 表示shuttle.seats、 すべてのインデックスの旅客情報、 そのインデックスがnullの場合、空の席。 今HTMLテキストは、Aの内側に置かれている場合 JavaScriptの変数は、使用して のdocument.getElementById、チャート缶 与えられたものの内部HTMLを編集 割り当てることにより、要素 へのHTMLテキスト のdocument.getElementById内部HTML変数。 ユーザーがドロップオフ]ボタンをクリックすると、 index.htmlには、電話するよ ドロップオフ機能。 そして、それはそれを実装するために私たちの仕事です。 ドロップオフでは、いずれかを削除したいと思う シャトルからの乗客の場合にのみ 我々は彼らの目的地の範囲にいる、 彼らの住宅。 だから、ドロップオフがいるかどうかを確認する必要があります シャトルは任意の範囲である 住宅、および削除、必要な シャトルからの乗客。 我々はしているのであれば、どのようにチェックしますか どんな家の範囲内? さて、再び、我々はを利用することができます を渡し、機能をshuttle.distance 点の緯度と経度 私たちはと照合していること。 しかし、これらのポイントは何ですか? あなたが覚えていればよく、住宅·アレイ、 houses.jsに格納 各家の緯度と経度 連想配列は、すべての インデックスは、その家の名前です。 その後、乗客を削除するには - まあ、我々は彼らの範囲にいる場合のみ、 彼らはに行きたい家。 だからもう一度、覚えている乗客 店舗ごとの乗客の家 に行きたい。 彼らは彼らの範囲内にある場合 家、そして我々はそれを削除します shuttle.seatsとセットから乗客 nullに配列内の位置。 それでは、いくつかの追加機能について話しましょう すなわち、実施することが可能である CS50シャトルP-セット。 ポイントシステムがあります、それによって あなたは何を追跡 ユーザーが持って指摘している。 乗客を降ろしたため 成功し、彼らはポイントを得ることができます。 しかし、乗客を降ろししようとしているため どこでどんな家が近くに存在しない、 まあ、それはそのために罰せ得ることができます。 だから、おそらくあなたはを追跡したい グローバル変数内のポイント。 あなたはどこで、恐らくタイマーを実装することができます ユーザは、一定量を有している ピックアップし、Aをドロップオフまでの時間 乗客の一定数。 多分これを統合 ポイントシステムで。 または、このようなことをグラフに編集することができます 乗客は家によって並べ替えられています。 だから、おそらく一種だろう shuttle.seatsする機能。 あなたが飛んで機能を実装することができ、 ここでユーザーがコナミを入力すると コー​​ドは、その後、シャトルはリフトオフ 地面とシャトルが飛ぶことができる。 しかし、オフの安全な降下を、最大限に活用するために シャトルは上その車輪を着陸 第一グランド。 また、テレポーテーションを実装することができ、 あなたはのドロップダウンリストを作成する場合、 index.htmlの建物。 そのうちの1選択する ユーザーは、に輸送されます キャンパス内に構築すること。 [OK]を、しかし、通過するの いくつかの壁 そこにあなたの方法上の建物。 また、速度を変更することができ シャトルは、ユーザが増加することを可能に または速度を減少させる。 おそらく、あなたはグローバル変数にしたい どのくらいの燃料を追跡 シャトルは減少し、持って それあなたが一緒に行くように。 あなたがゼロをヒットしたら、しかし、シャトル あなたはしていない限り移動することはできません おそらくボタンを使って、又は、給油 でも、あなた自身のガソリンスタンドを作る。 しかし、それは確かではありません 完全なリスト。 フルのためのスペックをチェックしてください おそらく、リスト、または提案 あなたのTFに自分。 空は限界です。 これはあなたの最後のCS50パラセットです、 ので、それを楽しんでいる。 これはCS50シャトルた。 私はそれが楽しかったですが、言ってんだ であなたのためにこれらを作る 制作チーム。 と私はあなたがしたことを願っています だけでなく、それらを楽しむ。 私の名前はZamylaです。 そして、これはCS50た。