ZAMYLA陳:好了,我們在這裡, 最後對設置在CS50。 從有你們表示祝賀 走了這麼遠,因為你的第一個Hello 世界和印刷上 金字塔的馬里奧。 你做了一個網站的最後一周。 而我們將要製作一個又一個 這個星期,一個可以讓你 帶動周邊​​的哈佛校園裡,採摘 高達CS50工作人員和 把他們回到自己的 民居。 現在,上週我們曾在PHP中, 服務器端語言。 對於這對集,我們就要介紹 到JavaScript中,這是一個 客戶端語言。 因此,讓我們來看看一些 公司所提供的分銷代碼 你為這個對集。 在JavaScript文件夾中,將有 是一堆JavaScript文件。 有buildings.js,它包含一個 哈佛周圍建築物的數組 校園裡有他們的信息 和位置。 Houses.js是哈佛的數組 住宅房屋與他們的 經度和緯度。 Passengers.js包含的陣列 乘客中,CS50工作人員 你會被帶回至 他們居住的房子。 Math3D.js,它包含了很多 功能做的運動。 如果你是數學頭腦,然後 歡迎您來我看看。 但你並不需要了解 一切都在那裡。 Shuttle.js,與交易 航天飛機的運動。 和index.html的是主頁, 一切都發生了,真的,那裡的 用戶互動的網站。 Service.css是CSS樣式表, 其中除了Twitter的 引導圖書館,控制 如何index.html的樣子。 然後我們也有service.js,這 包含服務功能 航天飛機。 下面是你要去的地方是 填寫一些待辦事項的的。 現在讓我們來看看對象和 關聯數組在JavaScript中, 其中,對於所有意圖和目的, 是可以互換的。 如果我想使一個對象的變量 所謂的魔杖,我會 聲明它。 和那些大括號內,我會 指定,其核心是獨角獸,木 是櫻桃,並且長度為13。 現在,我也可以訪問值 使用對象 關聯數組表示法。 所以魔杖指數的核心,我可以設置 這等於麒麟,或 檢查如果我需要。 或者,我可以使用點運算符 wand.wood等於櫻桃,和 依此類推等等。 所以你看到,關聯數組和 在JavaScript對象都將是 互換和意志 進來很方便。 然後,我們看到建築的數組 在buildings.js, 再次,對象的數組。 如果我想做出最好的一個數組 在哈佛校園的建築物,然後 我想使它成為如下。 使用此對象表示法,其中 我存儲的根,名稱,地址, 緯度,經度和每 單體建築對象。 讓我們快速談談變量 在JavaScript中。 像PHP,JavaScript變量 是弱或鬆散類型。 要創建一個局部變量,你前綴 變量名與V-A-R,變種。 現在,在JavaScript中,函數會 限制變量的範圍。 因此,如果你在有一個局部變量 一個函數,那麼其他功能 不能訪問它。 但是,與C,循環和條件不 限制變量的範圍。 所以,即使你的內聲明它 條件,整個功能將 可以訪問它。 現在,沒有變種,變 將是全球性的。 所以,如果你只需要聲明的名稱和 指定一個值,則該變量 將是一個全局變量 在JavaScript中。 現在,房子,我們有一個關聯 主機類型對象的數組,其中 每一個房子只是一個緯度 和經度。 那麼我們有乘客 陣列,它是一個數組 的對象類型的乘客。 所以,每一位乘客都有一個用戶 姓名,名稱,和房子。 請注意,我說的類型 乘客,這真的只是意味著 每個對象都有 同樣的鍵值對。 所以型乘用車的每一個對象都有 一個用戶名,一個名稱和一個房子。 那麼,我們需要 做的對集? 好了,我們需要允許用戶選擇 了工作人員,以顯示所有的 工作人員目前正在 我們的班車,並把它們關閉。 然後,我們也將討論額外的 給可實現的功能 航天飛機對集。 但是,讓我們來談談皮卡第一。 CS50工作人員的面孔已經 種滿校園,其中每個 臉是作為一個地方標誌 上的三維地球,並作為一個 標記的2D地圖上。 因此,當用戶點擊皮卡 按鈕,我們希望附近的加 乘客穿梭。 我們也想刪除自己的位置 從世界和標記刪除其 標記從地圖上看,這表明 他們在我們的班車了。 那麼,我們如何檢測,如果乘客 都在我們的航天飛機範圍是多少? 好了,作用距離,所以 shuttle.distance,傳遞 經緯度,將計算 從當前位置的距離 穿梭於該點的 你與給定的指定 緯度和經度。 所以,你可以用它來計算 距離從航天飛機到 乘客。 但你怎麼知道在哪裡 乘客是? 嗯,這就是我們必須 編輯填充功能。 填充所有地方的工作人員 在乘客進入世界 並進入地圖,但不 存儲他們的位置。 因此,也許你可以存儲自己的 放置標記和標記 在一些全局數組。 現在,已經是一個全局數組 乘客存儲信息。 每個乘客陣列存儲 乘客的姓名和他們的房子。 所以也許你可以添加一些參數 有給乘客的對象。 為了幫助我們檢測到所有的乘客 在我們的範圍內 穿梭,讓我們通過所有的迴路 乘客乘客陣列。 for循環在JavaScript看起來 這樣的事情,非常相似, 對於那些在C循環或者,我們可以使用一個 替代for循環結構, 在陣列變種I,其中I仍然會 該指數,但你並不需要 指定array.length 條件,我+ +。 每一個乘客的位置是 通過他們的地方得分。 但這個地方標誌是不 緯度和經度。 我們必須通過訪問這些參數 獲得的幾何形狀,使用get 幾何上的位置標記,然後 一旦我們有幾何,越來越 無論是緯度或經度 使用這些功能。 所以,現在我們知道如何檢測是否 乘客都在 我們的範圍內穿梭。 一旦我們有了這些乘客,我們將 要補充的是,任何乘客 內的範圍。 我們希望,讓他們跳,並採取 只有一個座位上我們的班車,但 如果我們有足夠的空間給他們。 該shuttle.seats陣列將顯示 座位是否是空的,或 誰在那個位子。 所以,如果一個座位是空的,那麼 那個座位將為null。 所以遍歷數組席位, 檢查空座位,存儲 乘客進入這些席位,直到你 沒有任何更多的空座位。 不幸的是,其他乘客 將必須等待 下一次航天飛機下來。 一旦他們穿梭取得聯繫,我們會想 刪除自己的位置標記,它 是他們的照片在3D世界中。 如果我想刪除一個地方標記P, 然後我會得到所有的功能 從我的地球,從谷歌地球, 然後刪除特定的地方 標記使用removeChild功能。 那麼最後,讓我們刪除標記, 在2D地圖上的圖標,對於任何 乘客,我們正在加快。 要刪除標記M,然後我會 只是執行m.setMap空。 這樣做有效範圍內的任何乘客, 你已經完成了皮卡。 圖表功能,應顯示所有 這是在乘客的 航天飛機,空座位,如果空。 所以,圖表應該遍歷 shuttle.seats,顯示 乘客信息的各項指標, 和空座位,如果該索引是空。 現在,如果HTML文本放置的內 JavaScript變量,然後通過使用 的document.getElementById,圖可以 編輯的內部HTML定 通過指定元素 HTML文本的 的document.getElementById內部HTML變量。 當用戶單擊Drop Off按鈕 在index.html的,它會​​調用 空投功能。 它是我們的工作來實現這一點。 在空投中,我們將要移除任何 來往穿梭的乘客只有 我們在他們的目的地的範圍, 他們居住的房子。 所以空投則要檢查是否 穿梭是在任何的範圍 房子,並移除任何需要 乘客來往穿梭。 那麼我們該如何檢查,如果我們 在任何房子的範圍是多少? 好了,再一次,我們將做的使用 shuttle.distance函數,傳入 的點的緯度和經度 我們正在核對。 但什麼是那些要點? 好了,房子的數組,如果你還記得 在houses.js,存儲 北緯每個房子和經度 一個關聯數組,其中每 索引是房子的名字。 然後去掉乘客 - 好了,只有我們是在自己的範圍內 他們想要去的房子。 所以,再一次,請記住,乘客 存儲的房子,每一個乘客 想去。 如果他們是在為自己的範圍內 房子,然後我們會刪除 從shuttle.seats和集客 其在數組中的位置為空。 現在讓我們來談談一些額外的功能 可以在實施 在CS50班車P-集合。 有一個點制度, 你跟踪有多少 指向一個用戶。 對於落乘客 成功,他們能獲得積分。 但對於試圖落客 那裡沒有任何房子附近, 好了,他們可以得到懲罰了點。 因此,也許你想跟踪的 點在全局變量。 您可以或許實現一個計時器,其中 用戶具有一定量的 時間拿起落一 一定數量的乘客。 甚至這種整合 用點系統。 或者您也可以編輯圖表,使得 乘客通過內部排序。 所以這可能是一個排序 函數來shuttle.seats。 你可以實現一個飛行的功能, 其中,如果用戶輸入了小浪 碼,然後穿梭升空 地面和航天飛機能飛。 但是,對於一個安全落,最好使 航天飛機降落輪子上的 第一個理由。 您也可以實現隱形傳態, 在那裡你犯了一個下拉列表 建築物的index.html。 並選擇其中的一個時, 用戶將被運送到 在校園內的建築物。 好吧,雖然,通過旅行 一些牆壁 在那裡你的方式建築。 您還可以更改的速度 梭,允許用戶增加 或減小的速度。 也許你想要一個全局變量 跟踪燃料多少的 有梭,減少 它作為你走。 一旦你打到零,不過,穿梭 不能,除非你已經移動 加油,可能使用一個按鈕,或 甚至讓自己的加油站。 但是,這肯定是不 一個詳盡的清單。 退房的規格為全 列出,或者建議 你自己到TF。 天空是極限。 這是你最後CS50對集, 所以有它的樂趣。 這是CS50班車。 我不得不說,這是一個很高興 以使這些為你 生產隊。 我希望你已經 享受其中,也是如此。 我的名字是Zamyla。 這是CS50。