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。