一 : 理解A*寻路算法具体过程
这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的图片.
当然寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究~~
简易地图
如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用 B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块.
二维数组在游戏中的应用是很多的, 比如贪吃蛇和俄罗斯方块基本原理就是移动方块而已. 而大型游戏的地图, 则是将各种"地貌"铺在这样的小方块上.
寻路步骤
1. 从起点A开始, 把它作为待处理的方格存入一个"开启列表", 开启列表就是一个等待检查方格的列表.
2. 寻找起点A周围可以到达的方格, 将它们放入"开启列表", 并设置它们的"父方格"为A.
3. 从"开启列表"中删除起点 A, 并将起点 A 加入"关闭列表", "关闭列表"中存放的都是不需要再次检查的方格
图中浅绿色描边的方块表示已经加入 "开启列表" 等待检查. 淡蓝色描边的起点 A 表示已经放入 "关闭列表" , 它不需要再执行检查.
从 "开启列表" 中找出相对最靠谱的方块, 什么是最靠谱? 它们通过公式 F=G+H 来计算.
F = G + H
G表示从起点 A 移动到网格上指定方格的移动耗费 (可沿斜方向移动).
H表示从指定的方格移动到终点 B 的预计耗费 (H 有很多计算方法, 这里我们设定只可以上下左右移动).
我们假设横向移动一个格子的耗费为10, 为了便于计算, 沿斜方向移动一个格子耗费是14. 为了更直观的展示如何运算 FGH, 图中方块的左上角数字表示 F, 左下角表示 G, 右下角表示 H. 看看是否跟你心里想的结果一样?
从 "开启列表" 中选择 F 值最低的方格 C (绿色起始方块 A 右边的方块), 然后对它进行如下处理:
4. 把它从 "开启列表" 中删除, 并放到 "关闭列表" 中.
5. 检查它所有相邻并且可以到达 (障碍物和 "关闭列表" 的方格都不考虑) 的方格. 如果这些方格还不在 "开启列表" 里的话, 将它们加入 "开启列表", 计算这些方格的 G, H 和 F 值各是多少, 并设置它们的 "父方格" 为 C.
6. 如果某个相邻方格 D 已经在 "开启列表" 里了, 检查如果用新的路径 (就是经过C 的路径) 到达它的话, G值是否会更低一些, 如果新的G值更低, 那就把它的 "父方格" 改为目前选中的方格 C, 然后重新计算它的 F 值和 G 值 (H 值不需要重新计算, 因为对于每个方块, H 值是不变的). 如果新的 G 值比较高, 就说明经过 C 再到达 D 不是一个明智的选择, 因为它需要更远的路, 这时我们什么也不做.
如图, 我们选中了 C 因为它的 F 值最小, 我们把它从 "开启列表" 中删除, 并把它加入 "关闭列表". 它右边上下三个都是墙, 所以不考虑它们. 它左边是起始方块, 已经加入到 "关闭列表" 了, 也不考虑. 所以它周围的候选方块就只剩下 4 个. 让我们来看看 C 下面的那个格子, 它目前的 G 是14, 如果通过 C 到达它的话, G将会是 10 + 10, 这比 14 要大, 因此我们什么也不做.
然后我们继续从 "开启列表" 中找出 F 值最小的, 但我们发现 C 上面的和下面的同时为 54, 这时怎么办呢? 这时随便取哪一个都行, 比如我们选择了 C 下面的那个方块 D.
D 右边已经右上方的都是墙, 所以不考虑, 但为什么右下角的没有被加进 "开启列表" 呢? 因为如果 C 下面的那块也不可以走, 想要到达 C 右下角的方块就需要从 "方块的角" 走了, 在程序中设置是否允许这样走. (图中的示例不允许这样走)
就这样, 我们从 "开启列表" 找出 F 值最小的, 将它从 "开启列表" 中移掉, 添加到 "关闭列表". 再继续找出它周围可以到达的方块, 如此循环下去...
那么什么时候停止呢? —— 当我们发现 "开始列表" 里出现了目标终点方块的时候, 说明路径已经被找到.
如何找回路径
如上图所示, 除了起始方块, 每一个曾经或者现在还在 "开启列表" 里的方块, 它都有一个 "父方块", 通过 "父方块" 可以索引到最初的 "起始方块", 这就是路径.
将整个过程抽象
把起始格添加到 "开启列表"
do
{
寻找开启列表中F值最低的格子, 我们称它为当前格.
把它切换到关闭列表.
对当前格相邻的8格中的每一个
if (它不可通过 || 已经在 "关闭列表" 中)
{
什么也不做.
}
if (它不在开启列表中)
{
把它添加进 "开启列表", 把当前格作为这一格的父节点, 计算这一格的 FGH
if (它已经在开启列表中)
{
if (用G值为参考检查新的路径是否更好, 更低的G值意味着更好的路径)
{
把这一格的父节点改成当前格, 并且重新计算这一格的 GF 值.
}
} while( 目标格已经在 "开启列表", 这时候路径被找到)
如果开启列表已经空了, 说明路径不存在.
最后从目标格开始, 沿着每一格的父节点移动直到回到起始格, 这就是路径.
主要代码
程序中的 "开启列表" 和 "关闭列表"
List<Point> CloseList;List<Point> OpenList;
Point 类
public class Point{ public Point ParentPoint { get; set; } public int F { get; set; } //F=G+H public int G { get; set; } public int H { get; set; } public int X { get; set; } public int Y { get; set; } public Point(int x, int y) { this.X = x; this.Y = y; } public void CalcF() { this.F = this.G + this.H; }}
寻路过程
public Point FindPath(Point start, Point end, bool IsIgnoreCorner){ OpenList.Add(start); while (OpenList.Count != 0) { //找出F值最小的点 var tempStart = OpenList.MinPoint(); OpenList.RemoveAt(0); CloseList.Add(tempStart); //找出它相邻的点 var surroundPoints = SurrroundPoints(tempStart, IsIgnoreCorner); foreach (Point point in surroundPoints) { if (OpenList.Exists(point)) //计算G值, 如果比原来的大, 就什么都不做, 否则设置它的父节点为当前点,并更新G和F FoundPoint(tempStart, point); else //如果它们不在开始列表里, 就加入, 并设置父节点,并计算GHF NotFoundPoint(tempStart, end, point); } if (OpenList.Get(end) != null) return OpenList.Get(end); } return OpenList.Get(end);}
下载代码
本文链接:
二 : 怎么用电话线上网|谁可以说的具体点啊,要些什么东西!整个过程是怎
怎么用电话线上网|
谁可以说的具体点啊,要些什么东西!整个过程是怎么样的!比如要输入什么号之内的!可不可以从电话线的中间并一条线行不行!
Windows 用户如何拨号上网
用户上网一般通过两种方式:电话拨号上网和局域网上网。其中通过局域网直接
连入Internet,上网方便,稳定,传输速度快,一般在10M或10M以上,但是由于
受区域位置、布线范围等条件的限制,并不是每一位用户都能通过局域网上网。
电话拥有众多的用户数量,而且电话线路覆盖范围极广,这一切都为用户通过电
话线上网提供了有利的条件,同时这也使得Internet的用户可以遍布世界各地。
通过电话拨号上网需要借助调制解调器(Modem),目前速度最高可达到56k/bps
(通过ISDN或ADSL等技术可达到更高速度),这里我们主要说一下如何通过普通
调制解调器设置拨号上网。
使用拨号上网之前两大步骤:首先需要安装相关的硬件设备,即"安装调制解
调器",其次"设置拨号上网"。这一章先介绍调制解调器的安装。
◇安装调制解调器◇ 建议参考调制解调器说明书,也可参考以下步骤。
(1)
单击"开始(Start)"-->"设置(Setting)"-->"控制面板(Controlpanel)",在打开
的"控制面板"窗口中双击"增加新硬件(add
New Hardware)"。按照提示进行操作。
(2)当出现如下画面时,不需要Windows搜索新硬件,再按"下一步(Next) "按钮
.
(3)在硬件类型列表框里选择"调制解调器(Modem)"。
(4) 再按"下一步(Next)"按钮,系统提示"要不要检测用户的调制解调器"(如
有随Modem附带的驱动程序盘一般选择"不检测",否则检测)。
(5) 按"下一步(Next)"按钮,选择"从软盘安装...(Have disk)",并将所附驱
动软盘或光盘插入,根据屏幕提示完成安,然后则跳至(7)
。如果不选择"从软盘安装(Have disk)",则跳至(6)。
(6)
从屏幕所示的在Modem列表框中选择自己准备好的Modem型号(如无相应的型号,
选"标准调制解调器"即可),再单击"下一步(Next)"按钮,从弹出的窗口中择合适
的端口,如COM2,单击"下一步(Next)"按钮,根据提示完成安装。
(7)
从"控制面板"中选择"调制解调器(Modem)"图标,在"常规"属性项列表中会出现
刚才安装的调制解调器。选择你安装的调制解调器并在弹出对话框中选择"诊断"
标签,选择"详细信息(More
Info)"按钮,等待一段时间后,如果出现状态信息,则Modem安装成功;否则出现
报错信息。
安装完调制解调器后请先查看系统中是否有拨号网络相应软件(Windows98一般都
带),步骤如右所示: 打开"我的电脑(MyComputer)";如窗口中存在
"拨号网络(Dial-up Networking)"图标,则可跳过本步骤。如不存在,可按下列
步骤进行:
◇安装"拨号网络"◇
打开"我的电脑(MyComputer)";如窗口中存在 "拨号网络(Dial-up
Networking)"图标,则可跳过本步骤。如不存在,可按下列步骤进行
使用拨号上网之前两大步骤:首先需要安装相关的硬件设备,即"安装调制解
调器",其次"设置拨号上网"。这一章先介绍调制解调器的安装。
(1)打开"开始(Start)"-->"设置(Setting)"-->"控制面板(Control
Panel)",双击其中的"增加/删除程序(Add/Remove Program)"图标。单
击"Windows安装程序(Windows
Setup)"标签,选择"通讯(Communications)",单击"详细资料(Details)"按钮
(2)列表框内选择"拨号网络(Dial_Up Networking)"。
(3) 单击"确定(OK)"两次后就开始安装,按照屏幕提示完成"拨号网络(Dial_up
Networking)"的安装操作。
(4) 安装完毕,在"我的电脑(MyComputer)"窗口中会增加"拨号网络(Dial-up
Networking)"图标。
(3)在硬件类型列表框里选择"调制解调器(Modem)"。
(4) 再按"下一步(Next)"按钮,系统提示"要不要检测用户的调制解调器"(如
有随Modem附带的驱动程序盘一般选择"不检测",否则检测)。
◇添加相关网络协议及组件◇
首先请检查系统中是否已装有拨号网络相关的网络协议及组件,如没有的话,
按照如下步骤进行添加:
(1)打开"我的电脑"窗口,双击"控制面板(Control
Pannel)"图标,双击"网络(Network)"图标,如出现如右图所示,则跳过本步
骤,否则删除所有项目,然后按下列步骤进行。
(2)单击"添加(Add)"按钮,出现左图所示窗口,选择"客户"。然后单击"添加
(A)…"按钮(见下图)
(3)在"厂商"列表中选择"Microsoft",在"网络客户"列表中选择"WINDOWS网络
客户",单击"确定(OK)"按钮。(见右图)
( 4)在步骤(2)窗口中选择"适配器"。然后单击"添加(A)…"按钮。出现左
图所示窗口。
(5)"厂商"选择"Microsoft","适配器"选择"拨号网络适配器",单击"确定(OK
)"按钮。
(6)在步骤(2)窗口中选择"协议"。然后单击"添加(A)…"按钮。出现右图所
示窗口。
(7)在出现的"选择network transport
"对话框中从"厂商"列表中选择"Microsoft","网络协议"列表中选择"TCP/IP",
单击"确定"按钮。
(8)按照提示进行操作。安装完毕后需重新启动计算机 。
◇设置拨号网络属性◇
确保拨号网络相关的网络协议及组件已添加完备,接下来进行拨号网络属性的
设置。
一、建立连接(1)打开"我的电脑"窗口,双击"拨号网络(Dial-up Networking
)"图标。
(2)双击"建立新连接(Make New Connection)"图标。
(3)在对话窗口最上面的文本框内输入任意名称如(jsust),设备选择为你安
装的调制解调器。单击"下一步"按钮。
(4)在弹出的窗口中输入区号(比如372,前面可以不加0)要拨号的电话号码(
163,169等)。选择"国家代码"为"中国(86)"。
(5)单击"下一步"按钮,计算机提示你已安装好一个拨号网络,根据提示单击"
完成(Finish)"按钮。这时拨号网络内出现出现一个新图标,其名称为第三步所
输名称(如右下图)。
◇设置连接属性◇
(
1)选择上面所建连接,单击鼠标右键,选择"属性(Properties)"菜单项,出现
右图所示窗口,不选择"使用区号与拨号属性(S)",其中电话号码处为你以前设
置的电话号码。连接方式处选择为你前面所安装的调制解调器。单击"设置
(C)..."
标签,进行调制解调器属性设置。
(2)再单击"选项(Options)"标签,选择相应选项,按照左图所示进行各项设
置。单击"确定(OK)"按钮。
(3)返回步骤(1)所示窗口,单击"服务器类型(Server type)"标签。
(4)完全按照右图所示进行设置。然后单击"TCP/IP设置(P)…"按扭,设置
tcp/ip属性 。
(5)选择"指定名称服务器的地址(M)"项,并输入名称服务器的IP地址(注意:
此处Ip地址千万不可输错),如左图所示。然后单击"确定"按钮。
(6)拨号入网连接设置完毕。单击"确定"按钮。
◇进行拨号连接◇
(1)双击所建连接图标,弹出拨号窗口。
(2)输入"用户名(Username)"及"口令(Password)",按"连接(Connect)"
按钮开始拨号。一般在两声振铃之后,调制解调器会开始有呼叫声,表明访问服
务器已开始应答。
(3)拨号成功后,在屏幕下端状态栏的最右面会出现一个绿色的两个电脑连在一
起的小图标,用鼠标右键单击它可以查看"状态"或"断开连接"。
至此调制解调器安装及拨号网络设置已全部完成,拨号成功以后,您就可以畅游
Internet,感受数字化生活的迷人魅力了!
1、先双击"我的电脑"图标,再"我的电脑"窗口中双击"拨号网络"图标,出现如下
所示的"拨号网络"窗口。
“个性化”菜单
2、再在该窗口中双击"建立新连接"图标,填入你想要的拨号图标名(如下图
所示的"我的连接"),选定你已经安装的调制解调器。
简单地说,“个性化”菜单的作用就是不断地监视并显示经常使用的菜单项
目,隐藏那些不经常使用的程序选项。当用户要想使用那些隐藏了的菜单时,只
须将鼠标指针悬停在双箭头上方,菜单中就会显示出所有可以使用的应用程序条
目。这样用户在使用“开始”菜单访问常用程序时将更加迅速。由于Windows
2000 Professional会根据程序的使用频率对“开始”菜单中的程序项进行动态调
整,所以,如果某个程序被用户频繁使用,它将逐渐上升到顶行。
3、安大拨号用户可照此填写,电话号码是"5106444"。红玫瑰船长特别提醒
你注意:这里的电话号码不是你自己电话的号码。而是你的ISP(比如电信局)的
上网的电话号码(比如163和169)!
为了增强对用户文件的管理,Windows 2000
Professional把“我的文档”作为所有应用程序保存文件的缺省文件夹(除非某
个程序明确要求保存在不同的文件夹中,否则Windows 2000
Professional都会截获保存路径并将其重定向到“我的文档”文件夹)。这样,
用户保存和查找信息就有了统一的位置。
4、设置完毕后,单击下图所示的窗口中的"完成"按钮,即可在"拨号网络"窗
口中建立一个新连接图标。
我的图片
5、回到"拨号网络"窗口中可以发现刚才新建的"我的连接"图标已经出现,若
还没有出现可按F5或"查看(V)"菜单下的刷新;然后右键单击"我的连接"图标后再
选中属性。
6、一般情况下用户是可以不使用区号的,可将"使用区号与拨号属性(S)"框
中的钩去掉,然后点击"设置(C)..."按钮或按"C"键。
7、在以下是"常规"选项卡中的配置情况。
8、在"连接"选项卡中一般是按下图设置,但如果你的电话有"遇忙转移"等一些
电话特服的话,你可能在拨号时一直听到"嘟、嘟"声,你就可以将"呼叫首选项"
中的"拨号之前等侯拨号音(W)"前的钩钩去掉。
9、单击上图的"端口设置(O)..."按钮或按"O"键,即可弹出如下图所示的"高
级端口设置"窗口,在高级端口设置中,用户可根据自己的调制解调器的性能将缓
冲区设高或设低,确定后返回到"连接"选项卡。
10、在"连接"选项卡中点击"高级(V)"按钮或按"V"键后可按下图设置,设完后
确定即可。
11、然后来到"选项"选项卡,按下图设置(关键是选中"拨号后出现终端窗口
",这样在拨号时才能出现"拨号后终端屏幕"),确定后回到"常规"选项卡设置。
12、在"常规"选项卡中点击"服务器类型",按下图设置,然后点击"TCP/IP设置
"。
13、选中"指定名称服务器的地址"单选按钮,将主域名服务器(即主控DNS)的
IP地址填上,单击"确定"按钮返回到"服务器类型"选项卡即可。
14、在"服务器类型"选项卡中单击"确定"按钮,返回到"拨号网络"窗口,即
告全部设置完毕。
三 : 闪讯具体怎么用(详细过程)
闪讯,英文名为EPhone,类似于移动的飞信。注:针对个人/学生的EPhone称为闪讯。Web呼叫中心和企业用户的EPhone称为新航线。 1、业务号码:就是EPhone号码,是对外统一的标示。EPhone业务允许用户选择浙江电信网内原有的固定电话号码或虚拟号段的号码作为EPhone的业务号码,不允许选择其他运营商号码作为EPhone业务号码。固定电话在申请开通EPhone业务后,升级为EPhone固定办公电话,EPhone业务号码与固定电话同号。 2、工作电话:工作电话一般与业务号码相同。 3、接听号码:用户在使用电话的时候接听终端的号码。 4、移动终端号码:用户在个人信息设置的接听终端为小灵通或者手机时的号码。 5、软号码:用户采用“我的电脑”的方式进行拨打接听的时候绑定的号码。 6、业务用户:使用EPhone的用户。 7、计费号码:指业务号码。 8、短信接收号码:就是指移动终端号码,用户可以任意设置哪个移动终端号码为短信接收号码。 9、用户状态:EPhone终端设置六种用户状态,分别为联机、脱机、离开、忙碌、移动办公、通话中。编辑本段业务开放范围 Ephone针对中国电信浙江分公司用户开放。 1、业务号码范围:中国电信浙江分公司网内原有的后付费固定电话号码或特定虚拟号段的号码。 2、付费号码范围:与业务号码相同。编辑本段业务功能1、通信录 统一的企业通信录,设置所有员工的通信录,包括邮件、电话号码、手机等。员工登录系统,可自动获取企业通信录信息,并可根据条件查询相应的信息。 每个员工还可以导入导出建立个人通讯录,当呼出呼入的电话号码不在通讯录中时,软件自动提示用户“是否将该号码加入通讯录”。2、一号通 在固话号码下可捆绑手机号码、小灵通号码。3、来电接续 系统可根据企业或个人对来电号码设置的重要级别,选择只让固话振铃、让移动终端振铃、转入秘书服务、拒接等多种接续方式。 系统可根据使用者此时客户端软件的状态(联机、离开、会议中、脱机等),选择合适的振铃终端。 4、点击拨号:用户在客户端上可以通过四种方式实现点击拨号,点击通信录、点击在线联系人名、点击呼叫记录、直接输入被叫号码等。5、多方通话 最多可支持20方电话同时在线,EPhone用户只能和其中一方通话,其他用户处于呼叫保持状态。EPhone用户只要通过鼠标点击即可切换通话对象。6、呼叫转接 EPhone用户均能通过操作EPhone客户端软件,将来话转接到其它任何号码上。7、固话号码具备短信收发能力 任一固话号码具备短信收发能力。 如果EPhone用户不在线,系统可自动将收到的短信转发至其移动终端上。 点对点发送时使用IM界面,使得EPhone用户收发短信的操作更便捷。 支持群发短信。8、电话会议 电话会议主要有预约会议、即时会议。另外多方(含两方)通话可以转入会议。最多可支持30方电话同时会议。9、固话号码漫游 当计算机连入互联网时,在客户端软件上选择电脑接通模式,即可通过计算机的耳麦进行通话,所用号码仍为固话号码。10、即时通信 类似MSN、QQ的即时消息工具,提供点对点聊天、群聊、文件传送等功能。11、数据会议 可支持电子白板、应用共享。四 : 拔牙的具体过程一般都是怎么样的?
在许多情况下,我们不得不进行拔牙,因为如果不拔牙的话,病痛会一直伴随着我们。(www.61k.com)而许多人对拔牙这个手术不太了解,那么拔牙的具体过程都是怎么样的呢?下面就来给大家具体介绍一下,供大家来详细了解一下。
1、分离牙龈:
用牙龈分离器从龈沟插入,将附着于牙颈周围的龈组织分离,以免拔牙时造成牙龈撕裂。
2、挺松牙根:
用挺插入牙根和牙槽骨之间,牙挺的凹槽对着牙根面,左手保护邻近牙齿,右手持牙挺,以牙槽骨为支点,利用杠杆作用和转动力量,从近中或远中部位逐渐挺松牙齿。
3、拔除患牙:
将牙钳喙准确放置于患牙的唇舌侧或颊舌侧,使钳喙与牙齿长轴方向缓慢摇动,随着牙齿松动度增大,用力向外牵引拔出。
单根牙牙根呈锥形者,可以稍加旋转力量拔出。
单根牙牙根呈扁平状者和多根牙,应避免旋转力,并宜顺着牙根弯曲的方向拔出,否则易折断牙根。
4、断根拔除出:
首先要了解每个牙的牙根数目和分布情况。拔除断根时应根据不同情况采取不同方法。如断根边缘露于牙槽骨之间,将牙根挺出。断根位于牙槽窝内或部位很深者,则用骨凿凿除一部分根周骨壁,形成缝隙,然后插入根挺或根尖挺,将断根挺出多根牙折断牙根尚聚在一起者,可用骨凿将联结处劈,分成几个单根,然后分别取出,上述方法仍难拔出的断根,可切开并翻起颊侧粘骨膜瓣,凿除部分颊侧骨质,暴露牙根,然后取出断根,缝合粘骨膜瓣及牙龈。
5、伤口处理及注意事项:
牙拔除后,用刮匙刮净牙槽窝内的肉芽组织和异物,搔刮创面使渗血充盈牙槽窝,然后用手指按压颊(唇)舌侧牙齿龈使其复位。较大的拔牙创,尚须缝合牙龈。最后用消毒纱条或棉卷复盖伤口,嘱病员将纱条轻咬半小时至一小时至不再出血时,即可吐出。注意纱条不能长时间留置口内,以免拔牙创感染。并嘱病员在拔牙后当天不要漱口,以免洗掉牙槽窝内的凝血块而影响拔牙创愈合。如有缝合线,嘱病员在术后四天左右来复诊时拆除缝线。
以上这些就是拔牙的具体过程,可以看出拔牙并不是简单的事情,需要经过一系列复杂的过程。依次是需要分离牙龈,挺松牙齿,拔出患牙,断根拔除出,伤口处理以及一些注意事项。这样下来才算是完整的拔牙过程。
61阅读提醒您本文地址:
本文标题:4p怎么玩说说具体过程-理解A*寻路算法具体过程61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1