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