用C开发智能手机软件推箱子五
2020-06-14 15:16 来源:桐乡养生网
在上篇文章“使用 C# 开发智能软件:推箱子(四)”中,我对Common/ 源程序文件进行了介绍。在这篇文章中介绍经过改进后的 Common/ 源程序文件。也就是说,已经实现了“使用 C# 开发智能软件:推箱子(四)”的第二个评论中的想法,将地图 ushort[,] map 改为 byte[,] map 了。下面就是改进后的 FindPath 类:
以下是引用片段:
1usingSystem;
awing;
neric;
4
mon
6{
7///
8///寻找最短路线
9///
10staticclassFindPath
11{
12staticSize[]offsets={newSize(0,1),newSize(1,0)还是立即找自己问题,newSize(0,-1),newSize(-1,0)};
13staticDirection[]directions={uth,st,rth,st};
14
15///
16///寻找最短路线
17///
18///地图
19///出发点
20///目的地
21///最短路线
22publicstaticQueueSeek(byte[,]map,Pointfrom,Pointto)
23{
24QueuemoveQueue=newQueue();//路线
25intvalue;//与离目的地距离相关的一个量智能手环产品,变化规律:=2=1=3=2=1=3=2=1
26if(Seek(map,to,outvalue))//找到了一条路线
27{
28Pointhere=from;//出发点(即工人的位置)
29Pointnbr=newPoint();//四周的邻居
30for(value=(value+1)%3+1;here!=to;value=(value+1)%3+1)//逐步走向目的地
31{
32for(inti=0;ngth;i++)
33{
34nbr=d(here,offsets[i]);//开始寻找四周的邻居
35if(lue(map[nbr.Y,nbr.X])==value)//就往这个方向走
36{
queue(directions[i]);//路线向目的地延伸一步
38break;
39}
40}
41here=nbr;//继续前进
42}
43}
eanAllMark(map);//清除所有标志,恢复现场
45returnmoveQueue;//所寻找的路线,如果无法到达目的地则为该路线的长度为零
46}
47
48///
49///寻找最短路线,使用广度优先搜索
50///
51///地图
52///目的地
53///输出:搜索完成时标记的值
54///是否成功
55staticboolSeek(byte[,]map,Pointto,outintvalue)
56{
57Queueq=newQueue();
rk(refmap[to.Y,to.X],1);//从目的地开始往回寻找出发点,目的地标记为1
59Pointnbr=pty;//四周的邻居
60for(;;)
61{
62value=lue(map[to.Y,to.X])%3+1;//与离目的地距离相关的一个量,用作标记,变化规律:
63for(inti=0;ngth;i++)//1=2=3=1=2=3=1=2=3=
64{
65nbr=d(to,offsets[i]);//开始寻找四周的邻居
66if(Man(map[nbr.Y,nbr.X]))break;//到达出发点(即工人的位置)
67if(Blank(map[nbr.Y,nbr.X]))//可以走的路
68{
rk(refmap[nbr.Y,nbr.X],value);//标记,防止以后再走这条路
queue(nbr);//加入队列,等待以后继续寻找
71}
72}
73if(Man(map[nbr.Y,nbr.X]))break;//到达出发点
74if(unt==0)returnfalse;//无法到达出发点
75to=queue();//出队,继续寻找,这是广度优先搜索,因为前面已经把四周能够走的路全部加入队列中了.
76}
77returntrue;//找到一条路线
78}
79}
80}
腰痛乳腺增生吃点什么好清远治疗白癜风方法-
夏天养狗的注意事项位置
虽然现在天气还是有点寒冷,但是毕竟春天已经来了,那么夏天还会远吗,那家中有狗狗的家庭就在想,在夏天我们应该让狗子或者自己注意点什么呢,那么今天就来为大家讲解一下关于夏天养狗的注意事项。一....
-
处理吉娃娃的烫伤有哪些管用的小方法位置
家庭饲养吉娃娃总是非常的淘气,它们喜欢跟在主人们的身后,不管在做什么,它都喜欢凑上前去看热闹。有时候主人们在厨房做饭的时候吉娃娃也会跟进去,这样就非常容易会导致宠物狗被热水或者溅出的油花烫...
-
墨西哥红膝头饲养它们的适应性非常强位置
墨西哥红膝头饲养,饲养蜘蛛首先要对它们的生活习性有一个比较全面的了解,然后根据它们的习性给它们布置生活环境,以及合理的选择食物等。墨西哥红膝头是一种比较常见的蜘蛛种类,那应该怎么饲养墨西哥...
-
墨西哥无毛犬怎么养定期洗澡很有必要位置
墨西哥无毛犬怎么养,墨西哥无毛犬是一种没有被毛的宠物犬,虽然它们长相丑陋但它们的性格非常的温顺,是一种很理想的家庭伴侣犬,但是由于该犬皮肤比较敏感,因此需要特殊的照顾,那墨西哥无毛犬怎么养...
-
埃及金字塔里的猫究竟是怎么一回事位置
埃及金字塔里的猫,究竟是怎么一回事?一直以来,关于金字塔里有着一只千年不死的猫的传说一直流传着,是真是假无人知晓。那么,今天就要来和大家讲述这个充满着神秘色彩的故事!千年不死的猫是否存在呢?相...
-
埃及神仙鱼多少钱它的的价格在位置
埃及神仙鱼多少钱,家庭中饲养观赏鱼的人越来越多,很多人已经不再局限于那些常见的观赏鱼,一些稀有冷门的观赏鱼也渐渐走入大家的视线,对此大家是否对埃及神仙鱼了解呢?它的的价格又是多少呢?下面就让...