>> 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た。