当前位置:首页 >> 季节养生

用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}

腰痛
乳腺增生吃点什么好
清远治疗白癜风方法
相关阅读
夏天养狗的注意事项位置

虽然现在天气还是有点寒冷,但是毕竟春天已经来了,那么夏天还会远吗,那家中有狗狗的家庭就在想,在夏天我们应该让狗子或者自己注意点什么呢,那么今天就来为大家讲解一下关于夏天养狗的注意事项。一....

处理吉娃娃的烫伤有哪些管用的小方法位置

家庭饲养吉娃娃总是非常的淘气,它们喜欢跟在主人们的身后,不管在做什么,它都喜欢凑上前去看热闹。有时候主人们在厨房做饭的时候吉娃娃也会跟进去,这样就非常容易会导致宠物狗被热水或者溅出的油花烫...

墨西哥红膝头饲养它们的适应性非常强位置

墨西哥红膝头饲养,饲养蜘蛛首先要对它们的生活习性有一个比较全面的了解,然后根据它们的习性给它们布置生活环境,以及合理的选择食物等。墨西哥红膝头是一种比较常见的蜘蛛种类,那应该怎么饲养墨西哥...

墨西哥无毛犬怎么养定期洗澡很有必要位置

墨西哥无毛犬怎么养,墨西哥无毛犬是一种没有被毛的宠物犬,虽然它们长相丑陋但它们的性格非常的温顺,是一种很理想的家庭伴侣犬,但是由于该犬皮肤比较敏感,因此需要特殊的照顾,那墨西哥无毛犬怎么养...

埃及金字塔里的猫究竟是怎么一回事位置

埃及金字塔里的猫,究竟是怎么一回事?一直以来,关于金字塔里有着一只千年不死的猫的传说一直流传着,是真是假无人知晓。那么,今天就要来和大家讲述这个充满着神秘色彩的故事!千年不死的猫是否存在呢?相...

埃及神仙鱼多少钱它的的价格在位置

埃及神仙鱼多少钱,家庭中饲养观赏鱼的人越来越多,很多人已经不再局限于那些常见的观赏鱼,一些稀有冷门的观赏鱼也渐渐走入大家的视线,对此大家是否对埃及神仙鱼了解呢?它的的价格又是多少呢?下面就让...

友情链接