教你如何编写自动走地图功能!
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
如何进行数字制图与动态地图制作数字制图和动态地图制作在当今信息时代中起到着越来越重要的作用。
随着科技的进步和人们对数据可视化的需求增加,掌握数字制图和动态地图制作的技巧成为了一项不可或缺的能力。
本文将探讨如何进行数字制图与动态地图制作,帮助读者提升相关技能。
1. 选择合适的工具要进行数字制图和动态地图制作,我们首先需要选择适合的工具。
目前市面上有许多优秀的制图软件可供选择,如ArcGIS、QGIS、Adobe Illustrator等。
根据自己的需求和掌握程度选择一款工具进行学习和使用。
2. 收集和整理数据在制作数字地图之前,我们需要收集并整理相关的地理数据。
可以通过互联网搜索、公共数据集、调查等途径获取需要的数据。
收集的数据可以是各种类型的,比如地理坐标、地理边界等。
整理数据时,可以使用Excel等工具进行数据清洗和格式化。
3. 确定地图类型和主题在进行数字制图和动态地图制作之前,我们需要确定地图的类型和主题。
地图的类型可以是点状、线状、面状等,而主题可以是人口分布、气候变化、交通流动等。
确定了地图类型和主题后,可以更好地设计和制作地图。
4. 进行地图设计和制作在进行地图设计和制作时,我们可以根据地图类型和主题进行相应的设计。
比如,如果要制作人口分布地图,可以使用不同颜色的点状符号表示不同人口密度的区域;如果要制作气候变化地图,可以使用渐变颜色的面状符号表示不同的气候带。
在设计中要注意符号的选取和排版的美观性。
5. 添加交互功能和动态效果为了使地图更具交互性和动态效果,我们可以添加一些交互功能和动态效果。
比如,可以通过鼠标悬停显示数据信息、点击切换不同图层、添加时间滑块以展示时序变化等。
这些交互功能和动态效果可以使地图更易于理解和让观众更积极地参与。
6. 进行数据可视化呈现在地图制作完成后,我们可以进行数据可视化呈现。
通过将地图嵌入到网页、PPT等介质中,可以更好地展示地理数据和传递信息。
在进行数据可视化呈现时,要注意排版的美观性和信息的清晰度,以便观众能够准确理解地图所传达的信息。
手把手教你自制户外登山地图_GPS资源应用大全_小组_六只脚第一章.前言大概4年前喜欢上了户外运动,从此一发不可收拾,07年初买了一个GPS,最初只是为了避免在山中迷路,随着使用的深入,我逐渐对GIS(地理信息系统)这门学问也产生了浓厚的兴趣,我想这就是所谓的爱屋及乌吧。
我利用爬山之外的业余时间收集了不少这方面的资料,因为不是科班儿出身,在学习的过程中遇到不少困难,有时一个小问题会困扰我很多天,好在最终还是找到了解决办法,当然从中也获得了乐趣。
现在我想把我积累的一些自制登山地图的经验写下来,并且尽量用大白话描述,不讲复杂的概念(咱也没那个水平),让对GIS知识感兴趣的初学者们可以少走些弯路,尽快入门。
还是那句话,咱不是科班儿出身,对一些概念的理解上肯定有偏差,也不够深入,咱就本着实用主义的精神,能把地图做出来就行了,如果哪些地方说的不对请各位大侠们多多包涵,多多指正,谢谢!第二章.基本概念虽说尽量不讲概念,但是有些最基础的还是要提一下:理解重点:地理坐标系(经纬度)、投影坐标系、WGS84坐标系、UTM坐标系很长时短时间都搞不清这些坐标系之间的关系,我觉得是初学者最容易糊涂的地方。
地理坐标系统说白了就是经纬度,经纬度坐标是球面坐标。
想一想假如我们想知道地球上两点间的距离,用一把尺子在地球仪上量是不可能的事情,因为地球仪是立体的没法量,所以我们要把地球投影到一个平面上,这样就把一个三维的坐标系转换成了一个二维的坐标系,这就是投影坐标系。
当然一个球体不可能完美的投影到一个平面上,必然会产生变形,不过科学家们用了很多复杂的算法让这个变形尽可能的小,具体是怎么弄得我也搞不懂。
地球是一个不规则的椭球体,不同国家地区的测绘人员会用不同参数的椭球来近似代替地球表面。
也就造成了选用不同的椭球体得出的结果会有偏差。
我们主要用的是美国国防局1984年搞的WGS84坐标系,这是专为GPS全球定位系统而建立的坐标系,这个坐标系采用的椭球体就是WGS84椭球,其他还有如北京50坐标系,用的是前苏联制定的一个椭球体(误差比较大),我国后来还制定了西安80坐标系和最新的2000坐标系,都用了不同的椭球体,这些坐标系之间是可以相互转化的,不过转化公式很复杂,也不用记,只要记住以后我们所做的工作都在WGS84坐标体系下完成的就行了。
android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)2013-10-11 07:57:05 我来说两句作者:ab6326795一、吐槽在百度地图看了几个小时的教程,发现种种问题,很大部分是百度对于定位API 网页上的DEMO代码一大堆错误!这极可能是定位SDK升级后而网页上的DEMO部分代码沿用旧版导致的。
错误1:在该示例中取了个变量叫mLocationClient,后面居然叫mLocClient,我找了半天,说这变量哪来的呢错误2:这个错误是最致命的,在网页上的DEMO(开发指南)里居然连开始定位这个函数至始至终都没调用过!!!新手咋看以为调用这个就可以定位了,擦,其实还应该调用mLocClient.start(); 才行,否则压根就没启动定位。
二、使用百度地图V2.2和定位V4.0实现地图和定位功能1、首先将必要的库文件导入到你的项目里,具体参看这里/map/sdkandev-2.htm/map/geosdk-android-developv4.0.htm2、编写代码(MainActivity.java)package com.android.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.LocationData;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationOverlay;import api.basestruct.GeoPoint;public class MainActivity extends Activity {//百度Keyprivate static final String BD_KEY="请在这里输入你的百度地图Key,这里我删除了我自己的,你自己填";//地图管理器private BMapManager mBMapMan=null;//地图视图private MapView mMapView=null;private LocationClient mLocationClient=null;//我的位置覆盖物private MyLocationOverlay myOverlay;//位置在图层中的索引private int myOverlayIndex=0;//是否定位到我的位置private boolean bmyLocal=true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mBMapMan=new BMapManager(getApplication());mBMapMan.init(BD_KEY, null);setContentView(yout.activity_main);//注意:请在试用setContentView前初始化BMapManager对象,否则会报错setContentView(yout.activity_main);mMapView=(MapView)findViewById(R.id.bmapsView);mMapView.setBuiltInZoomControls(true);//设置启用内置的缩放控件MapController mMapController=mMapView.getController();// 得到mMapView的控制权,可以用它控制和驱动平移和缩放GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point);//设置地图中心点mMapController.setZoom(12);//设置地图zoom级别////////////////////////定位功能代码开始mLocationClient=new LocationClient(this);mLocationClient.setAK(BD_KEY);myOverlay=new MyLocationOverlay(mMapView);LocationClientOption option=new LocationClientOption();option.setOpenGps(true);option.setAddrType("all");//返回的定位结果包含地址信息option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02//当不设此项,或者所设的整数值小于1000(ms)时,采用一次定位模式。
如何在Word中插入和处理地图和位置信息Word是一款功能强大的文字处理软件,除了编辑文字外,它还提供了丰富的功能来插入和处理地图和位置信息。
无论是在写作报告、制作演示文稿还是设计海报,插入地图和位置信息都能为内容增添趣味和可视化效果。
本文将介绍如何在Word中插入和处理地图和位置信息。
一、插入地图在Word中插入地图可以通过两种方式实现:使用Bing地图插件或者截图。
1. 使用Bing地图插件Bing地图插件是Word自带的一个功能强大的插件,可以帮助我们在文档中插入地图并进行编辑。
具体操作如下:(1)打开Word文档,点击“插入”选项卡,然后点击“地图”按钮。
(2)在弹出的地图插件窗口中,输入你要查找的地点或地址,然后点击“搜索”按钮。
(3)Bing地图插件会自动搜索并显示你输入的地点或地址的位置,选择你想要插入的地图样式和尺寸,然后点击“插入”按钮。
(4)地图将被插入到你的Word文档中,你可以通过拖动和调整大小来调整地图的位置和尺寸。
2. 使用截图如果你想要插入的地图来自于其他地图应用或者网页,你可以使用截图的方式将地图截取下来并插入到Word文档中。
具体操作如下:(1)打开你想要截图的地图应用或者网页,找到你想要截取的地图。
(2)按下“Print Screen”键(有时候可能是“PrtScn”或者“PrtSc”),将整个屏幕截取下来。
(3)打开Word文档,点击“插入”选项卡,然后点击“图片”按钮。
(4)在弹出的图片插入窗口中,点击“Ctrl+V”组合键将截图粘贴到文档中。
(5)你可以通过拖动和调整大小来调整截图的位置和尺寸。
二、处理地图和位置信息在插入地图后,我们还可以对地图和位置信息进行一些处理,以满足我们的需求。
1. 调整地图样式和尺寸你可以通过点击地图来选中它,然后使用Word提供的工具栏来调整地图的样式和尺寸。
你可以更改地图的颜色、边框、透明度等属性,还可以调整地图的大小和位置。
如何在地图上绘制出出行的路线图
出去旅游了一圈,想发布一下自己的行驶路线图,可是不知道怎么做,其实很简单,跟着我一起来看看怎么做吧。
1.首先在网页里打开【百度地图】,在左上角的框内分别搜索你的出发、停靠、以及终点的各个点,并一一做标记。
【标记】在地图右上角的【工具】下拉菜单里。
点击【标记】将大头针固定在你需要定的地方,可以自己修改标记点名称。
2.如图,将所有标记点一一固定好。
我是西安-汉中-青木川-天水-西安的路线图。
3. 然后把鼠标放在你的起点的标记点上,鼠标右键,选择【以此为起点】
4. 在第二个点上选择【以此为途经点】
5.每一个点都以此类推
6. 直到最后一个点,右键选择【以此为终点】
7. 最后,百度地图会自动生成路线图
8. 点击右下角还可以改变为卫星图,这个忘了截图了,大家可以自己点击试试。
按键精灵游戏脚本开发教程:自动逛地图打怪来源:按键学院【按键精灵】学院实战班目前在教授的是回合制游戏《神武》的脚本功能小编凑热闹,也跟着去玩了玩今天在这里和大家分享下,自动战斗功能的脚本编写流程~流程1、打开地图(快捷键Tab)2、随机点击地图上的坐标点3、如果遇到怪物则打怪(自动打怪快捷键Ctrl+A)技术难点:1、随机移动过程中,如何判断人物是否已经移动到了指定坐标点。
2、随机点击一组坐标的实用写法。
绑定游戏窗口今天我们要写的脚本有使用到大漠插件。
因为是多开脚本,所以查找句柄使用的是Search命令后台绑定模式:图色模式:dx3鼠标模式:dx键盘模式:dx关于Search命令的详细说明以及大漠绑定模式如何获知请参阅相关院刊:【院刊】-【201501期】沙盘后台绑定游戏打开地图《神武》游戏支持点击大地图进行移动的方式。
打开地图的快捷键为Tab键。
为了避免地图已经打开的情况我们要先判断地图有没有打开,没有打开的话才去按Tab键打开地图这里要注意一点那就是,地图没打开的情况下有两种情况1、没进入战斗画面2、进入了战斗画面所以,打开地图的判断步骤如下1、地图没打开——>在不在战斗画面?在战斗画面——>开始战斗不在战斗画面——>打开地图——>随机点击地图上的坐标点2、地图打开了——>人物在不在移动?在移动(说明还没到目的坐标)——> 不做任何操作不在移动(说明到了目的坐标或者遇到了阻碍物停止了移动)——> 点击下一个随机坐标本例子中,是通过找图方式来判断地图窗口是否出现小编找的是红框框里的图片蓝色框的区域里,经常会出现系统的横条提示信息,会遮挡住地图框影响找图,所以不取那个区域里的图片随机点击地图上的坐标点在QUI上画一个文本输入框输入框里的内容为要移动的坐标信息坐标与坐标之间用| 隔开随后在脚本中,我们读取文本输入框的内容读取之后用分割函数split依据 | 分隔符将其分割Split函数分割之后,会将分割的内容存放在数组里这里注意下通过第一次分割,假如数组(0) 存放的是:28,29dm.MoveTo 数组(0)这样写显然是错误的,会提示参数个数不对,那怎么办呢?不怕,我们有Execute函数Execute "dm.MoveTo " & 数组(0)这样写就可以执行了然后,我们前面说的要随机点只要将数组下标进行随机就可以了例如:Execute "dm.MoveTo " & 数组( Int(10* Rnd))关于Execute函数、随机函数的详细内容请参阅相关院刊【院刊】-【201410期】神奇的Execute语句【院刊】-【201411期】细说Rnd随机函数随机点完地图的坐标,就等着人物移动过去那怎么才能知道人物已经到了那个点了呢?这就要用到大漠的IsDisplayDead函数了当人物在移动的过程中,坐标肯定在不停的变化,当坐标一段时间不变则说明已经到了目的地,或者前方有障碍物过不去不管是到了目的地还是有障碍物过不去我们的处理方式都是点击下一个随机坐标点所以,我们使用IsDisplayDead 函数监视坐标的变化即可但是!在战斗画面里,坐标是一直不变的所以,利用 IsDisplayDead 函数监视坐标变化时,我们要先排除战斗画面,在战斗画面我们就不做监视操作。
在线动态地图平台用户手册二〇二〇年12月I 在线动态地图平台目录目录 (I)1 前言 (1)2 手册内容 (1)3 运行环境 (1)4 平台系统概述 (1)4.1 系统功能和技术特点 (2)4.2 数据资源模块 (2)4.3 制作地图模块 (3)4.4 出图打印模块 (4)5 系统操作指南 (4)5.1 数据资源操作说明 (4)5.1.1 公共数据管理 (5)5.1.1.1 公共数据查询 (6)5.1.1.2 公共数据预览 (6)5.1.2 我的数据管理 (7)5.1.2.1 我的数据上传 (7)5.1.2.2 我的数据预览 (8)5.2 制作地图操作说明 (8)5.2.1 自定义地图制作 (9)5.2.1.1 选择数据 (9)5.2.1.2 选择底图 (10)5.2.1.3 选择纸张 (11)5.2.1.4 地图编辑 (11)5.2.2 示例模板地图制作 (16)5.3 出图打印操作说明 (17)5.3.1 整幅导出 (17)5.3.2 分幅导出 (18)1 前言本手册为在线制图平台用户操作手册,手册将详细介绍平台所包括的上传数据、数据查看、制作地图、出图打印等的操作流程,旨在为用户熟悉系统功能、进行业务操作、提高工作效率提供帮助。
2 手册内容本手册内容主要为平台功能模块介绍及其操作流程。
3 运行环境支持IE、Google Chrome、360安全浏览器、Safari、Mozilla Firefox等主流浏览器浏览。
4 平台系统概述在线制图平台是为了克服弱GIS行业地图制图难、传统地图平台难以满足需求等问题所研发的,主要是具有数据改造发布、无极缩放、模板丰富、快速成图、不同尺寸纸张打印、分幅打印等功能的在线动态制图平台。
为方便用户操作、简化登录流程、本平台只需微信扫描二维码即可登录系统,如图4-1所示。
图4-1 在线制图平台入口页面4.1 系统功能和技术特点在线制图平台的硬件环境主要包括有服务器不低于2.3GHZ的4核Inter(R) Xeon(R) 处理器,不低于8G系统内存,不低于100GB存储容量。
精准电子地图简易制作教程来源:原创作者:feiyudz 浏览:37次日期:04-12本文配合专门视频教程,讲解利用GoogleEarth软件生成MapInfo格式电子地图的步骤。
Tips1:本方法可用于几公里乃至十几公里半径区域的电子地图制作。
Tips2:小区域范围里可以把经纬线看成是直线。
Tips3:jpg格式图片下载完成之前都不要关闭GoogleEarth,GetScreen只是调用GoogleEarth 但不能独立运行!Tips4:Windows图片像素坐标以左上角顶点为原点,向右为x轴正方向,向下为y轴正方向。
Tips5:所有地图,包括电子地图的方向顺序是:上北下南,左西右东。
Tips6:如果你做出来的区域地图明显不是矩形显示的,那么你还是重新再做一遍吧!因为你的地图肯定没有配准好坐标!!先来看看视频教程。
PS:由于还要开屏幕录软件,以及好久没整理系统的原因,录像里的程序运行会显得比较慢。
另:我是刚刚才摸索出的这种方法,所以操作起来不是很熟练,也出现了一些误操作,然后多了些改正的环节。
因为上传容量有限制,录像是经过高倍压缩的,有点模糊,但配合着下文的文字解说应该就没问题了。
我晚点试着重新压制或重新录制,看能不能换个更清晰更简洁的版本。
一、软件准备。
1、Google Earth Pro 4.2.0205.5730参考下载地址::8080/系统工具/系统其他/0510/Google%20Earth%20Pro%204.2.0205.5730.rar可能是网站代码的问题,大家注意要把从“http”开始到“.rar”的整个链接都拷全了,才能下到正确的文件哦!PS:我用的是这个版本。
换成5.0就不行了。
可能需要升级GetScreen吧。
细节自己研究。
2、GetScreen参考下载页面:我自己用的这个版本的软件我忘了下载地址,但这里有相关介绍,也许有点帮助。
另:如果无法运行,请务必安装net framework后再试。
php自动生成sitemap地图代码php自动生成sitemap地图代码如何生成sitemap地图呢?本文分享一例php代码,用于自动动态生成最新的sitemap地图文件,并通知google网站地图的更新,感兴趣的`朋友参考下吧。
本节内容:php自动生成sitemap地图例子,sitemap.inc.php:主要生成sitemap的类。
代码:复制代码代码示例:<?php// sitemap generator classclass Sitemap{// constructor receives the list of URLs to include in the sitemapfunction Sitemap($items = array()){$this->_items = $items;}// add a new sitemap itemfunction addItem($url,$lastmod = ”,$changefreq = ”,$priority = ”,$additional_fields = array()){$this->_items[] = array_merge(array(‘loc’ => $url,‘lastmod’ => $lastmod,‘changefreq’ => $changefreq,‘priority’ => $priority),$additional_fields);}// get Google sitemapfunction getGoogle(){ob_start();header(‘Content-type: text/xml’);echo ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;echo ‘<urlset xmlns=”/schemas/sitemap/0.9″xmlns:xsi=”/2001/XMLSchema-instance”xsi:schemaLocation=”http://www.sitemap /schemas/si temap/0.9/schemas/sitemap/0.9/sitemap.xsd ”>’;foreach ($this->_items as $i){echo ‘<url>’;foreach ($i as $index => $_i){if (!$_i) continue;echo “<$index>” . $this->_escapeXML($_i) . “</$index>”;}echo ‘</url>’;}echo ‘</urlset>’;return ob_get_clean();}// escape string characters for inclusion in XML structurefunction _escapeXML($str){$translation = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);foreach ($translation as $key => $value){$translati on[$key] = ‘&#’ . ord($key) . ‘;’;}$translation[chr(38)] = ‘&’;return preg_replace(“/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/”,”&” ,strtr($str, $translation));}}>sitemap.php:调用sitemap.inc.php,具体实现sitemap。
小地图制作教程小地图制作教程地图是一种用来表示地理信息的工具。
它可以帮助我们更好地了解和认知地球上各个地方的位置和特征。
在日常生活中,我们常常使用地图来找到目的地、规划旅行路线、了解地理概念等。
然而,有时候我们需要一些特定的地图,比如小地图,用来表示某个地区的详细信息。
下面是一个小地图制作的简单教程,希望能对你有所帮助。
材料和工具:1. 地图数据:你需要收集关于地区的地理信息数据,比如街道名称、建筑物位置等。
可以通过互联网搜索、地图软件等途径获取。
2. 电脑和地图制作软件:你需要一台电脑,并选择适合你的操作系统的地图制作软件。
流行的地图制作软件包括ArcGIS、Google Earth等。
3. 绘图工具:如果你想手绘地图,可以准备一些纸张、铅笔、尺子、绘图板等工具。
步骤一:收集地理信息数据首先,你需要收集关于地区的地理信息数据。
这些数据可以包括街道名称、建筑物位置、公园、河流、湖泊等地理要素。
你可以通过互联网搜索、地图软件等途径获取这些数据。
确保你所收集的数据准确可靠,并与最新的地理信息保持一致。
步骤二:选择地图制作软件根据你的需求和操作系统的类型,选择一款适合的地图制作软件。
地图制作软件可以帮助你更方便地处理和编辑地理信息数据,并生成符合你需求的地图。
ArcGIS是一个功能强大的地图制作软件,适用于专业用户。
而Google Earth则是一个普及度较高的免费软件,适合个人用户。
步骤三:导入地理信息数据在地图制作软件中,你需要将收集到的地理信息数据导入到软件中。
根据软件的功能和操作指引,选择相应的操作步骤将数据导入。
通常,可以通过导入文件、拖拽等方式将数据导入到软件中。
步骤四:编辑地理信息数据在导入数据后,你可以开始编辑地理信息数据了。
根据你的需求,进行编辑操作,如添加标签、绘制线条、标注地点等。
地图制作软件通常提供了丰富的编辑工具,可以帮助你更精细地展示地理要素。
步骤五:设置地图样式和布局在地图制作软件中,你可以根据自己的喜好设置地图的样式和布局。
适用对象:游戏支持在两个地图之间(邻近或者非邻近地图)可以通过鼠标点击地图自动切换场景!
相信大家都知道许多游戏都会提供一个地图,大家可以通过鼠标点击来切换地图场景,那么如何做到让程序自动在任意另个邻近地图之间切换场景呢?(甲:让鼠标点击两点不就可以了。
kao,哪个游戏是这样做滴...)其实大多数游戏都没提供在不同场景之间自动跑路的功能,都需要你鼠标点啊点啊,一直点....点到天荒地老才会到达目的地----累啊,大家同感吧!...我想也就是因为这样,才会出现我等热衷于开发解放工具的地球人..解放你们勤劳的双手,让你们有更多的手做更多的事..(迎面砸来一锅番茄...!),好了废话少说,引入正题:
请看下图
这个是一个简单的拓扑图,但要想在任意两点之间走路可不是一件容易的事,根据我学习的经验,大家别一开始就钻入到最短路的研究里头,其实你只要先学会通达就可以了,通则达达则通一个道理嘛..你们要做的只是将所有地图里头的点连接起来而已!
下面我们来分析这个图,这个图里头一共包含了ABCDEFGHI共9个点,也就是九个场景,我们用了N条线将他们连接起来了,怎么连接并没有特别严格的要求,当然里头也是有学问就是了,只是我等也非连连看的高手,不做深入了,只要把所有的点连接成一个准闭环即可,记住一点:闭环经过的点越多越好!也许精髓就在这里。
现在我们将这些点连接成一条直线(甲:脑门上出现几道黑线...乙:大汗!!),一贯到底,哈哈,解释一下,之所以要连接成一条直线其实只是想形象点告诉
我们的程序,嗨,我都把他们连成直线了,你总可以吞下去了吧。
意思就是可以将这样的直线点按照顺序存入数组里头,唉,谁让我们大脑比电脑厉害呢!!
!
关键来了:怎么连?你必须保证你的程序能根据这个直线,一步一步的到达目的地!!(注意必须是一步一步,能传送来去是另外一回事,道理一样)
如上图,假设要从A点出发到达,我们就可以这样来连接这个线,请看下例:
第1种线:A-E 这条线最短,但永远也不可能到达,不通达嘛!
第2种线:A-B-E 看上去是有绝对的优势,不错,我们程序就是要走这样的线
第3种线:A-B-C-B-D-B-E 这条线似乎也可以走,但好像是绕了,不过它的优点就是很简单,就是体现了一步一步走下去的道理。
其实告诉各位,第3种线的连法其实正是我们要的那条“一贯到底”的线,我们数组里头存的就是这条线,这其实就是存了一个简单的地图在我们的数组里头不是吗?在这个图例里头我们可以将第3种线连全就是:ABCBDBEFGFEHIA, 一条线连接了所有点对吧!
但我们实际需要的A-B-E这样的线,好了,问题明确了,如何从第3种线得到第2种线,这就需要我们的算法,下面给出示例代码,大家不妨参考参考,学会了不会为地图切换而烦恼了。
//读入地图数据,就是那条“一步一步一贯到底”的线中每个点的坐标, 你可以做一个过程读取地图数据文件也行。
ABCBDBEFGFEHIA。
rdMap(n,3)分别存储了每个点横坐标X、纵坐标Y、地图名称
dim rdMap(n,3)
rdMap(0,0)=x1:rdMap(0,1)=y1:rdMap(0,2)=name1
rdMap(1,0)=x2:rdMap(1,1)=y2:rdMap(0,2)=name2
......
rdMap(n-1,0)=xn:rdMap(n-1,1)=yn:rdMap(0,2)=namen
//获取用户需要走的两点位置信息,一般在程序的初始位置判断,或者用户下拉列表里头选择,这里直接给出
bgn_Map="nameA":end_Map="nameB"
//b是nameA所在数组的序列位置、e是nameB所在数组的序列位置
b=0:e=0:i=0
//得到nameB的数组位置
while i<n
if rdMap(i,2)=end_Map
e=i
goto extWhileA
endif
i=i+1
endwhile
rem extWhileA
j=0
//得到nameA的数组位置
while j<=e
if rdMap(j,2)=bgn_Map
b=j
goto extWhileB
endif
j=j+1
endwhile
rem extWhileB
//如果b或者e有一个为0说明没找到,此路不通,退出或者其他处理
if b*e=0
endscript
endif
//开始移动 A-B-C-B-D-B-E
chkMap=e
While b<e
while chkMap>b
//这里就是路径的核心算法,其实很简单,从终点倒数第二个点开始回溯检查每步是否有相同点,有则直接跳到该处,如A-B-C-B-D-B-E中从A到E 则可直接跳过C-B-D-B而产生A-B-E
chkMap=chkMap-1
if rdMap(chkMap,2)=rdMap(b,2)
b=chkMap+1
goto extwhileC
endif
b=b+1
Endwhile
rem extwhileC
chkMap=e:b=b+1
//b点即是下一步走的地图,开始切换地图
moveto rdMap(b,0) rdMap(b,1)
leftClick 1
//判断是否到达
gosub chkMapColor
......
Endwhile。