<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[骨頭的故事]]></title>
	  <link>http://fisherpop.blog.163.com</link>
	  <description><![CDATA[平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……]]></description>
	  <language>zh-CN</language>
	  <pubDate>Mon, 18 May 2009 23:35:03 +0800</pubDate>
	  <lastBuildDate>Mon, 18 May 2009 23:35:03 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[fisherpop]]></managingEditor>
	  <webMaster><![CDATA[魚骨頭]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[骨頭的故事]]></title>
	  	<url>http://ava.bimg.126.net/photo/0kaJwgy6UZURBpdqrOujrg==/181269885001818454.jpg</url>
	  	<link>http://fisherpop.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[Concert of Linkin Park]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008812111839590</link>
    <description><![CDATA[<div><P>&nbsp;Linkin Park has announced upcoming Music for Relief concerts in Shanghai (Oct. 12, 2008), Wuhan (Oct. 15, 2008) and Beijing (Oct. 19, 2008) in which a portion of the proceeds will be contributed to MFR for the earthquake-hit Sichuan area in China . </P>
<P>Yes,this new come from Linkinpark.com, of course it;s truth. So i can't miss it, because i had buy the ticket today.Let me wait for Oct.16.&nbsp;Venting&nbsp;pent-up feelings!!!</P>
<P><A href="http://img.blog.163.com/photo/aZsYa91YRhbdcLkYinHU6w==/4866139397374610221.jpg" target=_blank><IMG style="DISPLAY: block; TEXT-ALIGN: center" src="http://img.blog.163.com/photo/aZsYa91YRhbdcLkYinHU6w==/4866139397374610221.jpg"></A></P>
<P>Numb</P>
<P><EMBED allowScriptAccess="never" allowNetworking="internal" src="http://up.qzone.net.cn/qzone/20080831050855_audioplayer.swf?soundFile=http://yjtax.gov.cn/bbs/neo.mp3/Linkin_Park_-_Meteora_-_13_-_Numb_-_Abyss.mp3    &amp;playerID=10&amp;" width=290 height=40 type=application/x-shockwave-flash wmode="transparent"  ></P>
<P>In the end</P>
<P><EMBED allowScriptAccess="never" allowNetworking="internal" src=http://up.qzone.net.cn/qzone/20080831050855_audioplayer.swf?soundFile=http://tchodynia.free.fr/Mp3/Linkin%20Park%20-%20In%20the%20end.mp3&amp;playerID=10&amp; width=290 height=40 type=application/x-shockwave-flash wmode="transparent"  ></P></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008812111839590</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008812111839590</guid>
    <pubDate>Fri, 12 Sep 2008 23:18:39 +0800</pubDate>
    <dcterms:modified>2008-09-12T23:44:09+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[渐渐开始了解网络]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/3142737520088910324661</link>
    <description><![CDATA[<div><P>　　最近忽然对自建站长比较感兴趣，前前后后，反反复复为他忙碌着。从域名的申请，到空间的选定，再到到公安部进行备案，最后才能正式上线。虽然在5月时，我在阿里巴巴为申请了一个顶级域名，也做了一个小的工作室网站来承接和销售一些自动化的解决方案，不过效果还是不太明显。到是接到了各种各样的骚扰电话，有百度公司的广告推广服务，有代开发票的票务公司，有商务旅行一体化的机标酒店的优惠打折公司，等等。真是彻底的绝倒。真是栽了一株花，蜜蜂到是没引来几个，苍蝇却是来了一堆。这年头商业服务不好做啊。</P>
<P>　　而现在，一直忙着帮着我那一群玩网页游戏的朋友建一个公会论坛，基本的框架已经成型，也有了空间和域名，现在只做了一个非隐含转向，不过陆陆续续有人开始注册论坛和发贴子，是一个好现象，呵呵。等把这个搞成熟，可以靠网络广告来维持运行的时间，就真正开始做一个自动化方面的网站。</P>
<P>　　也说不到，哪天我这博又换一个地方，开一个独立域名和空间来写。一切皆有可能。</P></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/3142737520088910324661</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/3142737520088910324661</guid>
    <pubDate>Tue, 9 Sep 2008 22:32:04 +0800</pubDate>
    <dcterms:modified>2008-09-09T22:32:04+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[简单的生日]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008889493205</link>
    <description><![CDATA[<div><P>人又大了一岁</P>
<P>也少了些浮躁，多了几分沉淀。</P>
<P>今天过得很简单，</P>
<P>一个生日蛋糕，</P>
<P>晚上和同事们一起吃了餐饭。</P>
<P>就这样过了，</P>
<P>许下三个愿望，但愿都能实现。</P></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008889493205</comments>
    <slash:comments>4</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008889493205</guid>
    <pubDate>Mon, 8 Sep 2008 21:49:03 +0800</pubDate>
    <dcterms:modified>2008-09-08T21:49:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[梦见倾家荡产去留学]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200872711543259</link>
    <description><![CDATA[<div><P>　　上周末去新华书店看了一天的书，买了两本回家研读。一本是应用心理学，一本是30岁之前的人生目标方面的书。从大学毕业到现在工作两年了，不痛不痒的过了两年，有一点找不到目标。现在准备着手市场方面的工作，看看心理学，学习学习对人性的把握。再就是晚上抽空看了下pmbok.2004。哎，一天下来，头都有点小晕。</P>
<P>　　于是，晚上做一梦，梦到自己倾家荡产去美国留学，把所有的钞票兑换成美元。这时，一个小偷实然从背后把手伸进我的口袋，被发现后就大闹机场。。。。。。在极度不爽中，把自己搞醒了，看了下时间早上5点。</P>
<P>　　呼~~~，真是没有睡好，准备查查周易解解梦，也没发现什么好的网站，但愿是一个吉兆吧。</P></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200872711543259</comments>
    <slash:comments>6</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200872711543259</guid>
    <pubDate>Wed, 27 Aug 2008 23:05:43 +0800</pubDate>
    <dcterms:modified>2008-08-27T23:06:10+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.24精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200872515453622</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080825/gallery18-olympic080824.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200872515453622</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200872515453622</guid>
    <pubDate>Mon, 25 Aug 2008 13:54:53 +0800</pubDate>
    <dcterms:modified>2008-08-25T13:54:53+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.23精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008724112715244</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080824/gallery18-olympic080823.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008724112715244</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008724112715244</guid>
    <pubDate>Sun, 24 Aug 2008 23:27:15 +0800</pubDate>
    <dcterms:modified>2008-08-24T23:27:15+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.22精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008724112529409</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080823/gallery18-olympic080822.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008724112529409</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008724112529409</guid>
    <pubDate>Sun, 24 Aug 2008 23:25:29 +0800</pubDate>
    <dcterms:modified>2008-08-24T23:25:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.21精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008723105420850</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080822/gallery18-olympic080821.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008723105420850</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008723105420850</guid>
    <pubDate>Sat, 23 Aug 2008 22:54:20 +0800</pubDate>
    <dcterms:modified>2008-08-23T22:54:20+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.20精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/3142737520087227481125</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080821/gallery18-olympic080820.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/3142737520087227481125</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/3142737520087227481125</guid>
    <pubDate>Fri, 22 Aug 2008 19:48:01 +0800</pubDate>
    <dcterms:modified>2008-08-22T19:48:01+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.19精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200872111355528</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080820/gallery18-olympic080819.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200872111355528</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200872111355528</guid>
    <pubDate>Thu, 21 Aug 2008 23:03:55 +0800</pubDate>
    <dcterms:modified>2008-08-21T23:03:55+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.18精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008720111329796</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080819/gallery18-olympic080818.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008720111329796</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008720111329796</guid>
    <pubDate>Wed, 20 Aug 2008 23:13:29 +0800</pubDate>
    <dcterms:modified>2008-08-20T23:13:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.17精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871941931287</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080818/gallery18-olympic080817.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871941931287</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871941931287</guid>
    <pubDate>Tue, 19 Aug 2008 16:19:31 +0800</pubDate>
    <dcterms:modified>2008-08-19T16:19:31+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.16精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871833234555</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080817/gallery18-olympic080816.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871833234555</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871833234555</guid>
    <pubDate>Mon, 18 Aug 2008 15:32:34 +0800</pubDate>
    <dcterms:modified>2008-08-18T15:32:34+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.15精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871791428734</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080816/gallery18-olympic080815.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871791428734</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871791428734</guid>
    <pubDate>Sun, 17 Aug 2008 21:14:28 +0800</pubDate>
    <dcterms:modified>2008-08-17T21:14:28+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.14精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871695040391</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080814/gallery18-olympic080814.swf width=750 height=650 type=application/x-shockwave-flash quality="high"></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871695040391</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871695040391</guid>
    <pubDate>Sat, 16 Aug 2008 21:50:40 +0800</pubDate>
    <dcterms:modified>2008-08-16T21:50:40+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.13精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871501153348</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080814/gallery18-olympic080813.swf width=750 height=650 type=application/x-shockwave-flash quality="high"  ></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871501153348</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871501153348</guid>
    <pubDate>Fri, 15 Aug 2008 12:11:53 +0800</pubDate>
    <dcterms:modified>2008-08-15T12:13:18+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[蚁群算法ACO (Ant Colony Optimization) ]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008715114236159</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em"><IMG style="DISPLAY: block; TEXT-ALIGN: center" src="http://blog.minidx.com/wp-content/uploads/2008/02/20060605213618420.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">蚁群算法(Ant Colony Algorithm)是一种源于自然现象的算法，也是一种 meta heuristic，即与具体问题关系不大的优化算法，也就是它是一种用来在图中寻找优化路径的机率型技术。Marco Dorigo于1992年在他的博士论文中引入，其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。 </P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">小小的蚂蚁总是能够找到食物，他们具有什么样的智能呢？设想，如果我们要为蚂蚁设计一个人工智能的程序，那么这个程序要多么复杂呢？首先，你要让蚂蚁能够避开障碍物，就必须根据适当的地形给它编进指令让他们能够巧妙的避开障碍物，其次，要让蚂蚁找到食物，就需要让他们遍历空间上的所有点；再次，如果要让蚂蚁找到最短的路径，那么需要计算所有可能的路径并且比较它们的大小，而且更重要的是，你要小心翼翼的编程，因为程序的错误也许会让你前功尽弃。这是多么不可思议的程序！太复杂了，恐怕没人能够完成这样繁琐冗余的程序。 </P>
<P style="TEXT-INDENT: 2em">为什么这么简单的程序会让蚂蚁干这样复杂的事情？答案是：简单规则的涌现。事实上，每只蚂蚁并不是像我们想象的需要知道整个世界的信息，他们其实只关心很小范围内的眼前信息，而且根据这些局部信息利用几条简单的规则进行决策，这样，在蚁群这个集体里，复杂性的行为就会凸现出来。这就是人工生命、复杂性科学解释的规律！</P>
<P style="TEXT-INDENT: 2em">下面就是实现如此复杂性的七条简单规则：</P>
<P style="TEXT-INDENT: 2em">1、范围：</P>
<P style="TEXT-INDENT: 2em">蚂蚁观察到的范围是一个方格世界，蚂蚁有一个参数为速度半径（一般是3），那么它能观察到的范围就是3*3个方格世界，并且能移动的距离也在这个范围之内。</P>
<P style="TEXT-INDENT: 2em">2、环境：</P>
<P style="TEXT-INDENT: 2em">蚂蚁所在的环境是一个虚拟的世界，其中有障碍物，有别的蚂蚁，还有信息素，信息素有两种，一种是找到食物的蚂蚁洒下的食物信息素，一种是找到窝的蚂蚁洒下的窝的信息素。每个蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失。</P>
<P style="TEXT-INDENT: 2em">3、觅食规则：</P>
<P style="TEXT-INDENT: 2em">在每只蚂蚁能感知的范围内寻找是否有食物，如果有就直接过去。否则看是否有信息素，并且比较在能感知的范围内哪一点的信息素最多，这样，它就朝信息素多的地方走，并且每只蚂蚁多会以小概率犯错误，从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样，只不过它对窝的信息素做出反应，而对食物信息素没反应。</P>
<P style="TEXT-INDENT: 2em">4、移动规则： </P>
<P style="TEXT-INDENT: 2em">每只蚂蚁都朝向信息素最多的方向移，并且，当周围没有信息素指引的时候，蚂蚁会按照自己原来运动的方向惯性的运动下去，并且，在运动的方向有一个随机的小的扰动。为了防止蚂蚁原地转圈，它会记住最近刚走过了哪些点，如果发现要走的下一点已经在最近走过了，它就会尽量避开。</P>
<P style="TEXT-INDENT: 2em">5、避障规则：</P>
<P style="TEXT-INDENT: 2em">&nbsp;如果蚂蚁要移动的方向有障碍物挡住，它会随机的选择另一个方向，并且有信息素指引的话，它会按照觅食的规则行为。 </P>
<P style="TEXT-INDENT: 2em">7、播撒信息素规则：</P>
<P style="TEXT-INDENT: 2em">每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多，并随着它走远的距离，播撒的信息素越来越少。 </P>
<P style="TEXT-INDENT: 2em">下面的程序开始运行之后，蚂蚁们开始从窝里出动了，寻找食物；他们会顺着屏幕爬满整个画面，直到找到食物再返回窝。 </P>
<P style="TEXT-INDENT: 2em">其中，‘F’点表示食物，‘H’表示窝，白色块表示障碍物，‘+’就是蚂蚁了。 </P>
<P style="TEXT-INDENT: 2em">参数说明：</P>
<P style="TEXT-INDENT: 2em">&nbsp;最大信息素：蚂蚁在一开始拥有的信息素总量，越大表示程序在较长一段时间能够存在信息素。信息素消减的速度：随着时间的流逝，已经存在于世界上的信息素会消减，这个数值越大，那么消减的越快。</P>
<P style="TEXT-INDENT: 2em">错误概率表示这个蚂蚁不往信息素最大的区域走的概率，越大则表示这个蚂蚁越有创新性。</P>
<P style="TEXT-INDENT: 2em">速度半径表示蚂蚁一次能走的最大长度，也表示这个蚂蚁的感知范围。</P>
<P style="TEXT-INDENT: 2em">记忆能力表示蚂蚁能记住多少个刚刚走过点的坐标，这个值避免了蚂蚁在本地打转，停滞不前。而这个值越大那么整个系统运行速度就慢，越小则蚂蚁越容易原地转圈。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em" align=center>=================================================================================
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;
</P><P style="TEXT-INDENT: 2em" align=left>/**//*ant.c*/<BR>#define SPACE 0×20<BR>#define ESC 0×1b<BR>#define ANT_CHAR_EMPTY ‘+’<BR>#define ANT_CHAR_FOOD 153<BR>#define HOME_CHAR ‘H’<BR>#define FOOD_CHAR ‘F’<BR>#define FOOD_CHAR2 ‘f’<BR>#define FOOD_HOME_COLOR 12<BR>#define BLOCK_CHAR 177
</P><P style="TEXT-INDENT: 2em" align=left>#define MAX_ANT 50<BR>#define INI_SPEED 3<BR>#define MAXX 80<BR>#define MAXY 23<BR>#define MAX_FOOD 10000<BR>#define TARGET_FOOD 200<BR>#define MAX_SMELL 5000<BR>#define SMELL_DROP_RATE 0.05<BR>#define ANT_ERROR_RATE 0.02<BR>#define ANT_EYESHOT 3<BR>#define SMELL_GONE_SPEED 50<BR>#define SMELL_GONE_RATE 0.05<BR>#define TRACE_REMEMBER 50<BR>#define MAX_BLOCK 100
</P><P style="TEXT-INDENT: 2em" align=left>#define NULL 0<BR>#define UP 1<BR>#define DOWN 2<BR>#define LEFT 3<BR>#define RIGHT 4<BR>#define SMELL_TYPE_FOOD 0<BR>#define SMELL_TYPE_HOME 1
</P><P style="TEXT-INDENT: 2em" align=left>#include “stdio.h”<BR>#include “conio.h”<BR>#include “dos.h”<BR>#include “stdlib.h”<BR>#include “dos.h”<BR>#include “process.h”<BR>#include “ctype.h”<BR>#include “math.h”
</P><P style="TEXT-INDENT: 2em" align=left>void WorldInitial(void);<BR>void BlockInitial(void);<BR>void CreatBlock(void);<BR>void SaveBlock(void);<BR>void LoadBlock(void);<BR>void HomeFoodInitial(void);<BR>void AntInitial(void);<BR>void WorldChange(void);<BR>void AntMove(void);<BR>void AntOneStep(void);<BR>void DealKey(char key);<BR>void ClearSmellDisp(void);<BR>void DispSmell(int type);<BR>int AntNextDir(int xxx,int yyy,int ddir);<BR>int GetMaxSmell(int type,int xxx,int yyy,int ddir);<BR>int IsTrace(int xxx,int yyy);<BR>int MaxLocation(int num1,int num2,int num3);<BR>int CanGo(int xxx,int yyy,int ddir);<BR>int JudgeCanGo(int xxx,int yyy);<BR>int TurnLeft(int ddir);<BR>int TurnRight(int ddir);<BR>int TurnBack(int ddir);
</P><P style="TEXT-INDENT: 2em" align=left>int MainTimer(void);<BR>char WaitForKey(int secnum);<BR>void DispPlayTime(void);<BR>int TimeUse(void);<BR>void HideCur(void);<BR>void ResetCur(void);
</P><P style="TEXT-INDENT: 2em" align=left>/**//* —————&nbsp; */<BR>struct HomeStruct<BR>{<BR>&nbsp; int xxx,yyy;<BR>&nbsp; int amount;<BR>&nbsp; int TargetFood;<BR>}home;
</P><P style="TEXT-INDENT: 2em" align=left>struct FoodStruct<BR>{<BR>&nbsp; int xxx,yyy;<BR>&nbsp; int amount;<BR>}food;
</P><P style="TEXT-INDENT: 2em" align=left>struct AntStruct<BR>{<BR>&nbsp; int xxx,yyy;<BR>&nbsp; int dir;<BR>&nbsp; int speed;<BR>&nbsp; int SpeedTimer;<BR>&nbsp; int food;<BR>&nbsp; int SmellAmount[2];<BR>&nbsp; int tracex[TRACE_REMEMBER];<BR>&nbsp; int tracey[TRACE_REMEMBER];<BR>&nbsp; int TracePtr;<BR>&nbsp; int IQ;<BR>}ant[MAX_ANT];<BR>int AntNow;<BR>int timer10ms;<BR>struct time starttime,endtime;<BR>int Smell[2][MAXX+1][MAXY+1];<BR>int block[MAXX+1][MAXY+1];<BR>int SmellGoneTimer;<BR>int SmellDispFlag;<BR>int CanFindFood;<BR>int HardtoFindPath;
</P><P style="TEXT-INDENT: 2em" align=left>/**//* —– Main ——– */<BR>void main(void)<BR>{<BR>&nbsp; char KeyPress;<BR>&nbsp; int tu;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; clrscr();<BR>&nbsp; HideCur();<BR>&nbsp; WorldInitial();<BR>&nbsp; do<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; timer10ms = MainTimer();<BR>&nbsp;&nbsp;&nbsp; if(timer10ms) AntMove();<BR>&nbsp;&nbsp;&nbsp; if(timer10ms) WorldChange();<BR>&nbsp;&nbsp;&nbsp; tu = TimeUse();<BR>&nbsp;&nbsp;&nbsp; if(tu&gt;=60&amp;&amp;!CanFindFood)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(“Can not find food, maybe a block world.”);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WaitForKey(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorldInitial();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; if(tu&gt;=180&amp;&amp;home.amount&lt;100&amp;&amp;!HardtoFindPath)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(“God! it is so difficult to find a path.”);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(WaitForKey(10)==0×0d) WorldInitial();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HardtoFindPath = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; if(home.amount&gt;=home.TargetFood)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gettime(&amp;endtime);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KeyPress = WaitForKey(60);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DispPlayTime();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WaitForKey(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorldInitial();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else if(kbhit())<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KeyPress = getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DealKey(KeyPress);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; else KeyPress = NULL;<BR>&nbsp; }<BR>&nbsp; while(KeyPress!=ESC);<BR>&nbsp; gettime(&amp;endtime);<BR>&nbsp; DispPlayTime();<BR>&nbsp; WaitForKey(10);<BR>&nbsp; clrscr();<BR>&nbsp; ResetCur();<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>/**//* —— general sub process ———– */<BR>int MainTimer(void)<BR>/**//* output: how much 10ms have pass from last time call this process */<BR>{<BR>&nbsp; static int oldhund,oldsec;<BR>&nbsp; struct&nbsp; time t;<BR>&nbsp; int timeuse;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gettime(&amp;t);<BR>&nbsp; timeuse = 0;<BR>&nbsp; if(t.ti_hund!=oldhund)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if(t.ti_sec!=oldsec)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeuse+=100;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oldsec = t.ti_sec;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; timeuse+=t.ti_hund-oldhund;<BR>&nbsp;&nbsp;&nbsp; oldhund = t.ti_hund;<BR>&nbsp; }<BR>&nbsp; else timeuse = 0;<BR>&nbsp; return (timeuse);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>char WaitForKey(int secnum)<BR>/**//* funtion: if have key in, exit immediately, else wait ’secnum’ senconds then exit<BR>&nbsp;&nbsp; input: secnum — wait this senconds, must &lt; 3600 (1 hour)<BR>&nbsp;&nbsp; output: key char, if no key in(exit when timeout), return NULL */<BR>{<BR>&nbsp; int secin,secnow;<BR>&nbsp; int minin,minnow;<BR>&nbsp; int hourin,hournow;<BR>&nbsp; int secuse;<BR>&nbsp; struct&nbsp; time t;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gettime(&amp;t);<BR>&nbsp; secin = t.ti_sec;<BR>&nbsp; minin = t.ti_min;<BR>&nbsp; hourin = t.ti_hour;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; do<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if(kbhit()) return(getch());<BR>&nbsp;&nbsp;&nbsp; gettime(&amp;t);<BR>&nbsp;&nbsp;&nbsp; secnow = t.ti_sec;<BR>&nbsp;&nbsp;&nbsp; minnow = t.ti_min;<BR>&nbsp;&nbsp;&nbsp; hournow = t.ti_hour;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;&nbsp;&nbsp; if(hournow!=hourin) minnow+=60;<BR>&nbsp;&nbsp;&nbsp; if(minnow&gt;minin) secuse = (minnow-1-minin) + (secnow+60-secin);<BR>&nbsp;&nbsp;&nbsp; else secuse = secnow - secin;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;&nbsp;&nbsp; /**//* counting error check */<BR>&nbsp;&nbsp;&nbsp; if(secuse&lt;0)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(“Time conuting error, any keyto exit…”);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(3);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; while(secuse&lt;=secnum);<BR>&nbsp; return (NULL);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void DispPlayTime(void)<BR>{<BR>&nbsp; int ph,pm,ps;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ph = endtime.ti_hour - starttime.ti_hour;<BR>&nbsp; pm = endtime.ti_min - starttime.ti_min;<BR>&nbsp; ps = endtime.ti_sec - starttime.ti_sec;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(ph&lt;0) ph+=24;<BR>&nbsp; if(pm&lt;0) { ph–; pm+=60; }<BR>&nbsp; if(ps&lt;0) { pm–; ps+=60; }
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp; printf(“Time use: %d hour- %d min- %d sec “,ph,pm,ps);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int TimeUse(void)<BR>{<BR>&nbsp; int ph,pm,ps;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gettime(&amp;endtime);<BR>&nbsp; ph = endtime.ti_hour - starttime.ti_hour;<BR>&nbsp; pm = endtime.ti_min - starttime.ti_min;<BR>&nbsp; ps = endtime.ti_sec - starttime.ti_sec;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(ph&lt;0) ph+=24;<BR>&nbsp; if(pm&lt;0) { ph–; pm+=60; }<BR>&nbsp; if(ps&lt;0) { pm–; ps+=60; }
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; return(ps+(60*(pm+60*ph)));<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void HideCur(void)<BR>{<BR>&nbsp; union REGS regs0;<BR>&nbsp; regs0.h.ah=1;<BR>&nbsp; regs0.h.ch=0×30;<BR>&nbsp; regs0.h.cl=0×31;<BR>&nbsp; int86(0×10,&amp;regs0,&amp;regs0);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void ResetCur(void)<BR>{<BR>&nbsp; union REGS regs0;<BR>&nbsp; regs0.h.ah=1;<BR>&nbsp; regs0.h.ch=0×06;<BR>&nbsp; regs0.h.cl=0×07;<BR>&nbsp; int86(0×10,&amp;regs0,&amp;regs0);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>/**//* ———— main ANT programe ————- */<BR>void WorldInitial(void)<BR>{<BR>&nbsp; int k,i,j;<BR>&nbsp; randomize();<BR>&nbsp; clrscr();<BR>&nbsp; HomeFoodInitial();<BR>&nbsp; for(AntNow=0;AntNow&lt;MAX_ANT;AntNow++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; AntInitial();<BR>&nbsp; } /**//* of for AntNow */;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; BlockInitial();<BR>&nbsp; for(k=0;k&lt;=1;k++)<BR>&nbsp; /**//* SMELL TYPE FOOD and HOME */<BR>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=0;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Smell[k][i][j] = 0;<BR>&nbsp; SmellGoneTimer = 0;<BR>&nbsp; gettime(&amp;starttime);<BR>&nbsp; SmellDispFlag = 0;<BR>&nbsp; CanFindFood = 0;<BR>&nbsp; HardtoFindPath = 0;<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void BlockInitial(void)<BR>{<BR>&nbsp; int i,j;<BR>&nbsp; int bn;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(i=0;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp; for(j=0;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; block[i][j] = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; bn = 1+ MAX_BLOCK/2 + random(MAX_BLOCK/2);<BR>&nbsp; for(i=0;i&lt;=bn;i++) CreatBlock();<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void CreatBlock(void)<BR>{<BR>&nbsp; int x1,y1,x2,y2;<BR>&nbsp; int dx,dy;<BR>&nbsp; int i,j;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; x1 = random(MAXX)+1;<BR>&nbsp; y1 = random(MAXY)+1;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; dx = random(MAXX/10)+1;<BR>&nbsp; dy = random(MAXY/10)+1;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; x2 = x1+dx;<BR>&nbsp; y2 = y1+dy;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(x2&gt;MAXX) x2 = MAXX;<BR>&nbsp; if(y2&gt;MAXY) y2 = MAXY;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(food.xxx&gt;=x1&amp;&amp;food.xxx&lt;=x2&amp;&amp;food.yyy&gt;=y1&amp;&amp;food.yyy&lt;=y2) return;<BR>&nbsp; if(home.xxx&gt;=x1&amp;&amp;home.xxx&lt;=x2&amp;&amp;home.yyy&gt;=y1&amp;&amp;home.yyy&lt;=y2) return;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(i=x1;i&lt;=x2;i++)<BR>&nbsp;&nbsp;&nbsp; for(j=y1;j&lt;=y2;j++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; block[i][j] = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putch(BLOCK_CHAR);<BR>&nbsp;&nbsp;&nbsp; }<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void SaveBlock(void)<BR>{<BR>&nbsp;FILE *fp_block;<BR>&nbsp;char FileNameBlock[20];<BR>&nbsp;int i,j;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;gotoxy(1,MAXY+1);<BR>&nbsp; printf(”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “);<BR>&nbsp;gotoxy(1,MAXY+1);<BR>&nbsp;printf(“Save to file…”,FileNameBlock);<BR>&nbsp;gets(FileNameBlock);<BR>&nbsp;if(FileNameBlock[0]==0) strcpy(FileNameBlock,“Ant.ant”);<BR>&nbsp;else strcat(FileNameBlock,“.ant”);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;if ((fp_block = fopen(FileNameBlock, “wb”)) == NULL)<BR>&nbsp;{ gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp; printf(“Creat file %s fail…”,FileNameBlock);<BR>&nbsp; getch();<BR>&nbsp; exit(2);<BR>&nbsp;}<BR>&nbsp;gotoxy(1,MAXY+1);<BR>&nbsp; printf(”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;fputc(home.xxx,fp_block);<BR>&nbsp;fputc(home.yyy,fp_block);<BR>&nbsp;fputc(food.xxx,fp_block);<BR>&nbsp;fputc(food.yyy,fp_block);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;for(i=0;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp; for(j=0;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fputc(block[i][j],fp_block);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; fclose(fp_block);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void LoadBlock(void)<BR>{<BR>&nbsp;FILE *fp_block;<BR>&nbsp;char FileNameBlock[20];<BR>&nbsp;int i,j,k;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;gotoxy(1,MAXY+1);<BR>&nbsp; printf(”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “);<BR>&nbsp;gotoxy(1,MAXY+1);<BR>&nbsp;printf(“Load file…”,FileNameBlock);<BR>&nbsp;gets(FileNameBlock);<BR>&nbsp;if(FileNameBlock[0]==0) strcpy(FileNameBlock,“Ant.ant”);<BR>&nbsp;else strcat(FileNameBlock,“.ant”);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;if ((fp_block = fopen(FileNameBlock, “rb”)) == NULL)<BR>&nbsp;{ gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp; printf(“Open file %s fail…”,FileNameBlock);<BR>&nbsp; getch();<BR>&nbsp; exit(2);<BR>&nbsp;}
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;clrscr();<BR>&nbsp;home.xxx = fgetc(fp_block);<BR>&nbsp;home.yyy = fgetc(fp_block);<BR>&nbsp;food.xxx = fgetc(fp_block);<BR>&nbsp;food.yyy = fgetc(fp_block);<BR>&nbsp;gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);<BR>&nbsp; gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);<BR>&nbsp; food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;<BR>&nbsp; /**//* food.amount = MAX_FOOD; */<BR>&nbsp; home.amount = 0;<BR>&nbsp; home.TargetFood =<BR>&nbsp;&nbsp;&nbsp; (food.amount&lt;TARGET_FOOD)?food.amount:TARGET_FOOD;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;for(AntNow=0;AntNow&lt;MAX_ANT;AntNow++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; AntInitial();<BR>&nbsp; } /**//* of for AntNow */;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;for(i=0;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp; for(j=0;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; block[i][j] = fgetc(fp_block);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(block[i][j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putch(BLOCK_CHAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(k=0;k&lt;=1;k++)<BR>&nbsp; /**//* SMELL TYPE FOOD and HOME */<BR>&nbsp;&nbsp;&nbsp; for(i=0;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=0;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Smell[k][i][j] = 0;<BR>&nbsp; SmellGoneTimer = 0;<BR>&nbsp; gettime(&amp;starttime);<BR>&nbsp; SmellDispFlag = 0;<BR>&nbsp; CanFindFood = 0;<BR>&nbsp; HardtoFindPath = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; fclose(fp_block);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void HomeFoodInitial(void)<BR>{<BR>&nbsp; int randnum;<BR>&nbsp; int homeplace;<BR>&nbsp; /**//* 1 — home at left-up, food at right-down<BR>&nbsp;&nbsp;&nbsp;&nbsp; 2 — home at left-down, food at right-up<BR>&nbsp;&nbsp;&nbsp;&nbsp; 3 — home at right-up, food at left-down<BR>&nbsp;&nbsp;&nbsp;&nbsp; 4 — home at right-down, food at left-up */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; randnum = random(100);<BR>&nbsp; if(randnum&lt;25) homeplace = 1;<BR>&nbsp; else if (randnum&gt;=25&amp;&amp;randnum&lt;50) homeplace = 2;<BR>&nbsp; else if (randnum&gt;=50&amp;&amp;randnum&lt;75) homeplace = 3;<BR>&nbsp; else homeplace = 4;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; switch(homeplace)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case 1: home.xxx = random(MAXX/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home.yyy = random(MAXY/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.xxx = random(MAXX/3)+2*MAXX/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.yyy = random(MAXY/3)+2*MAXY/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 2: home.xxx = random(MAXX/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home.yyy = random(MAXY/3)+2*MAXY/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.xxx = random(MAXX/3)+2*MAXX/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.yyy = random(MAXY/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 3: home.xxx = random(MAXX/3)+2*MAXX/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home.yyy = random(MAXY/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.xxx = random(MAXX/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.yyy = random(MAXY/3)+2*MAXY/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 4: home.xxx = random(MAXX/3)+2*MAXX/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home.yyy = random(MAXY/3)+2*MAXY/3+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.xxx = random(MAXX/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.yyy = random(MAXY/3)+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp; }
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;<BR>&nbsp; /**//* food.amount = MAX_FOOD; */<BR>&nbsp; home.amount = 0;<BR>&nbsp; home.TargetFood = (food.amount&lt;TARGET_FOOD)?food.amount:TARGET_FOOD;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; /**//* data correctness check */<BR>&nbsp; if(home.xxx&lt;=0||home.xxx&gt;MAXX||home.yyy&lt;=0||home.yyy&gt;MAXY||<BR>&nbsp;&nbsp;&nbsp;&nbsp; food.xxx&lt;=0||food.xxx&gt;MAXX||food.yyy&lt;=0||food.yyy&gt;MAXY||<BR>&nbsp;&nbsp;&nbsp;&nbsp; food.amount&lt;=0)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp; printf(“World initial fail, any key to exit…”);<BR>&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp; exit(2);<BR>&nbsp; }
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);<BR>&nbsp; gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void AntInitial(void)<BR>/**//* initial ant[AntNow] */<BR>{<BR>&nbsp; int randnum;<BR>&nbsp; int i;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ant[AntNow].xxx = home.xxx;<BR>&nbsp; ant[AntNow].yyy = home.yyy;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; randnum = random(100);<BR>&nbsp; if(randnum&lt;25) ant[AntNow].dir = UP;<BR>&nbsp; else if (randnum&gt;=25&amp;&amp;randnum&lt;50) ant[AntNow].dir = DOWN;<BR>&nbsp; else if (randnum&gt;=50&amp;&amp;randnum&lt;75) ant[AntNow].dir = LEFT;<BR>&nbsp; else ant[AntNow].dir = RIGHT;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ant[AntNow].speed = 2*(random(INI_SPEED/2)+1);<BR>&nbsp; ant[AntNow].SpeedTimer = 0;<BR>&nbsp; ant[AntNow].food = 0;<BR>&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;<BR>&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;<BR>&nbsp; ant[AntNow].IQ = 1;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(i=0;i&lt;TRACE_REMEMBER;i++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ant[AntNow].tracex[i] = 0;<BR>&nbsp;&nbsp;&nbsp; ant[AntNow].tracey[i] = 0;<BR>&nbsp; }<BR>&nbsp; ant[AntNow].TracePtr = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; /**//* a sepecail ant */<BR>&nbsp; if(AntNow==0) ant[AntNow].speed = INI_SPEED;<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void WorldChange(void)<BR>{<BR>&nbsp; int k,i,j;<BR>&nbsp; int smelldisp;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; SmellGoneTimer+=timer10ms;<BR>&nbsp; if(SmellGoneTimer&gt;=SMELL_GONE_SPEED)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; SmellGoneTimer = 0;<BR>&nbsp;&nbsp;&nbsp; for(k=0;k&lt;=1;k++)<BR>&nbsp;&nbsp;&nbsp; /**//* SMELL TYPE FOOD and HOME */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[k][i][j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smelldisp = 1+((10*Smell[k][i][j])/(MAX_SMELL*SMELL_DROP_RATE));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelldisp&gt;=30000||smelldisp&lt;0) smelldisp = 30000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SmellDispFlag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy)||(i==home.xxx&amp;&amp;j==home.yyy))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* don’t over write Food and Home */;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelldisp&gt;9) putch(‘#’);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else putch(smelldisp+‘0′);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Smell[k][i][j]-= 1+(Smell[k][i][j]*SMELL_GONE_RATE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[k][i][j]&lt;0) Smell[k][i][j] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(SmellDispFlag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[k][i][j]&lt;=2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putch(SPACE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of one location */<BR>&nbsp; } /**//* of time to change the world */<BR>} /**//* of world change */
</P><P style="TEXT-INDENT: 2em" align=left>void AntMove(void)<BR>{<BR>&nbsp; int antx,anty;<BR>&nbsp; int smelltodrop,smellnow;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(AntNow=0;AntNow&lt;MAX_ANT;AntNow++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ant[AntNow].SpeedTimer+=timer10ms;<BR>&nbsp;&nbsp;&nbsp; if(ant[AntNow].SpeedTimer&gt;=ant[AntNow].speed)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SpeedTimer = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putch(SPACE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AntOneStep();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* ant0 is a sepecail ant, use different color */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(AntNow==0) textcolor(0xd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].food) putch(ANT_CHAR_FOOD);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else putch(ANT_CHAR_EMPTY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(AntNow==0) textcolor(0×7);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* remember trace */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].tracex[ant[AntNow].TracePtr] = ant[AntNow].xxx;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].tracey[ant[AntNow].TracePtr] = ant[AntNow].yyy;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(++(ant[AntNow].TracePtr)&gt;=TRACE_REMEMBER) ant[AntNow].TracePtr = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* drop smell */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; antx = ant[AntNow].xxx;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anty = ant[AntNow].yyy;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].food)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* have food, looking for home */<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smellnow = Smell[SMELL_TYPE_FOOD][antx][anty];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]*SMELL_DROP_RATE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelltodrop&gt;smellnow) Smell[SMELL_TYPE_FOOD][antx][anty] = smelltodrop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* else Smell[] = smellnow */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]-= smelltodrop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]&lt;0) ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of have smell to drop */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of have food */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* no food, looking for food */<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smellnow = Smell[SMELL_TYPE_HOME][antx][anty];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_HOME]*SMELL_DROP_RATE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelltodrop&gt;smellnow) Smell[SMELL_TYPE_HOME][antx][anty] = smelltodrop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* else Smell[] = smellnow */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_HOME]-= smelltodrop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME]&lt;0) ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of have smell to drop */<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; } /**//* of time to go */<BR>&nbsp;&nbsp;&nbsp; /**//* else not go */<BR>&nbsp; } /**//* of for AntNow */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; textcolor(FOOD_HOME_COLOR);<BR>&nbsp; gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);<BR>&nbsp; gotoxy(food.xxx,food.yyy);<BR>&nbsp; if(food.amount&gt;0) putch(FOOD_CHAR);<BR>&nbsp; else putch(FOOD_CHAR2);<BR>&nbsp; textcolor(7);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp; printf(“Food %d, Home %d&nbsp;&nbsp; “,food.amount,home.amount);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void AntOneStep(void)<BR>{<BR>&nbsp; int ddir,tttx,ttty;<BR>&nbsp; int i;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ddir = ant[AntNow].dir;<BR>&nbsp; tttx = ant[AntNow].xxx;<BR>&nbsp; ttty = ant[AntNow].yyy;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ddir = AntNextDir(tttx,ttty,ddir);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; switch(ddir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; ttty–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; ttty++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; tttx–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case RIGHT: tttx++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ant[AntNow].dir = ddir;<BR>&nbsp; ant[AntNow].xxx = tttx;<BR>&nbsp; ant[AntNow].yyy = ttty;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(ant[AntNow].food)<BR>&nbsp; /**//* this ant carry with food, search for home */<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if(tttx==home.xxx&amp;&amp;ttty==home.yyy)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home.amount++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AntInitial();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; if(tttx==food.xxx&amp;&amp;ttty==food.yyy)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;<BR>&nbsp; } /**//* of search for home */<BR>&nbsp; else<BR>&nbsp; /**//* this ant is empty, search for food */<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; if(tttx==food.xxx&amp;&amp;ttty==food.yyy)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(food.amount&gt;0)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].food = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; food.amount–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].dir = TurnBack(ant[AntNow].dir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;TRACE_REMEMBER;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].tracex[i] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].tracey[i] = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].TracePtr = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CanFindFood = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of still have food */<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; if(tttx==home.xxx&amp;&amp;ttty==home.yyy)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;<BR>&nbsp; }&nbsp; /**//* of search for food */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void DealKey(char key)<BR>{<BR>&nbsp; int i;<BR>&nbsp; switch(key)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case ‘p’:&nbsp;&nbsp; gettime(&amp;endtime);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DispPlayTime();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=MAXX-1;i++) putch(SPACE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ‘t’:&nbsp;&nbsp; if(SmellDispFlag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SmellDispFlag=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClearSmellDisp();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else SmellDispFlag = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ‘1′:&nbsp;&nbsp; DispSmell(SMELL_TYPE_FOOD);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClearSmellDisp();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ‘2′:&nbsp;&nbsp; DispSmell(SMELL_TYPE_HOME);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClearSmellDisp();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ‘3′:&nbsp;&nbsp; DispSmell(2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClearSmellDisp();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ’s’:&nbsp;&nbsp; SaveBlock();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case ‘l’:&nbsp;&nbsp; LoadBlock();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; gotoxy(1,MAXY+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=MAXX-1;i++) putch(SPACE);<BR>&nbsp; } /**//* of switch */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void ClearSmellDisp(void)<BR>{<BR>&nbsp; int k,i,j;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(k=0;k&lt;=1;k++)<BR>&nbsp; /**//* SMELL TYPE FOOD and HOME */<BR>&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[k][i][j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putch(SPACE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of one location */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>void DispSmell(int type)<BR>/**//* input: 0 — Only display food smell<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 — Only display home smell<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 — Display both food and home smell<BR>*/<BR>{<BR>&nbsp; int k,i,j;<BR>&nbsp; int fromk,tok;<BR>&nbsp; int smelldisp;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; switch(type)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case 0: fromk = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tok = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 1: fromk = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tok = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 2: fromk = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tok = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:fromk = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tok = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp; }<BR>&nbsp; SmellGoneTimer = 0;<BR>&nbsp; for(k=fromk;k&lt;=tok;k++)<BR>&nbsp; /**//* SMELL TYPE FOOD and HOME */<BR>&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=MAXX;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=MAXY;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[k][i][j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smelldisp = 1+((10*Smell[k][i][j])/(MAX_SMELL*SMELL_DROP_RATE));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelldisp&gt;=30000||smelldisp&lt;0) smelldisp = 30000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gotoxy(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i!=food.xxx||j!=food.yyy)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy)||(i==home.xxx&amp;&amp;j==home.yyy))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**//* don’t over write Food and Home */;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(smelldisp&gt;9) putch(‘#’);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else putch(smelldisp+‘0′);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } /**//* of one location */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int AntNextDir(int xxx,int yyy,int ddir)<BR>{<BR>&nbsp; int randnum;<BR>&nbsp; int testdir;<BR>&nbsp; int CanGoState;<BR>&nbsp; int cangof,cangol,cangor;<BR>&nbsp; int msf,msl,msr,maxms;<BR>&nbsp; int type;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; CanGoState = CanGo(xxx,yyy,ddir);<BR>&nbsp; if(CanGoState==0||CanGoState==2||CanGoState==3||CanGoState==6) cangof = 1;<BR>&nbsp; else cangof = 0;<BR>&nbsp; if(CanGoState==0||CanGoState==1||CanGoState==3||CanGoState==5) cangol = 1;<BR>&nbsp; else cangol = 0;<BR>&nbsp; if(CanGoState==0||CanGoState==1||CanGoState==2||CanGoState==4) cangor = 1;<BR>&nbsp; else cangor = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(ant[AntNow].food) type = SMELL_TYPE_HOME;<BR>&nbsp; else type = SMELL_TYPE_FOOD;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; msf = GetMaxSmell(type,xxx,yyy,ddir);<BR>&nbsp; msl = GetMaxSmell(type,xxx,yyy,TurnLeft(ddir));<BR>&nbsp; msr= GetMaxSmell(type,xxx,yyy,TurnRight(ddir));<BR>&nbsp; maxms = MaxLocation(msf,msl,msr);<BR>&nbsp; /**//* maxms - 1 - msf is MAX<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 - msl is MAX<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 - msr is MAX<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 - all 3 number is 0 */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; testdir = NULL;<BR>&nbsp; switch(maxms)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case 0: /**//* all is 0, keep testdir = NULL, random select dir */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 1: if(cangof)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(msl&gt;msr) if(cangol) testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cangor) testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 2: if(cangol)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(msf&gt;msr) if(cangof) testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cangor) testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case 3: if(cangor)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(msf&gt;msl) if(cangof) testdir =ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(cangol) testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:break;<BR>&nbsp; } /**//* of maxms */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; randnum = random(1000);<BR>&nbsp; if(randnum&lt;SMELL_DROP_RATE*1000||testdir==NULL)<BR>&nbsp; /**//* 1. if testdir = NULL, means can not find the max smell or the dir to max smell can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp; then random select dir<BR>&nbsp;&nbsp;&nbsp;&nbsp; 2. if ant error, don’t follow the smell, random select dir<BR>&nbsp; */<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; randnum = random(100);<BR>&nbsp;&nbsp;&nbsp; switch(CanGoState)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0: if(randnum&lt;90) testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (randnum&gt;=90&amp;&amp;randnum&lt;95) testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: if(randnum&lt;50) testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2: if(randnum&lt;90) testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: if(randnum&lt;90) testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4: testdir = TurnRight(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 5: testdir = TurnLeft(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 6: testdir = ddir;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 7: testdir = TurnBack(ddir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:testdir = TurnBack(ddir);<BR>&nbsp;&nbsp;&nbsp; } /**//* of can go state */<BR>&nbsp; }<BR>&nbsp; return(testdir);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int GetMaxSmell(int type,int xxx,int yyy,int ddir)<BR>{<BR>&nbsp; int i,j;<BR>&nbsp; int ms; /**//* MAX smell */
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; ms = 0;<BR>&nbsp; switch(ddir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; for(i=xxx-ANT_EYESHOT;i&lt;=xxx+ANT_EYESHOT;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=yyy-ANT_EYESHOT;j&lt;yyy;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!JudgeCanGo(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy&amp;&amp;type==SMELL_TYPE_FOOD)||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (i==home.xxx&amp;&amp;j==home.yyy&amp;&amp;type==SMELL_TYPE_HOME))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ms = MAX_SMELL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsTrace(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[type][i][j]&gt;ms) ms = Smell[type][i][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; for(i=xxx-ANT_EYESHOT;i&lt;=xxx+ANT_EYESHOT;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=yyy+1;j&lt;=yyy+ANT_EYESHOT;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!JudgeCanGo(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy&amp;&amp;type==SMELL_TYPE_FOOD)||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (i==home.xxx&amp;&amp;j==home.yyy&amp;&amp;type==SMELL_TYPE_HOME))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ms = MAX_SMELL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsTrace(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[type][i][j]&gt;ms) ms = Smell[type][i][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; for(i=xxx-ANT_EYESHOT;i&lt;xxx;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=yyy-ANT_EYESHOT;j&lt;=yyy+ANT_EYESHOT;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!JudgeCanGo(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy&amp;&amp;type==SMELL_TYPE_FOOD)||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (i==home.xxx&amp;&amp;j==home.yyy&amp;&amp;type==SMELL_TYPE_HOME))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ms = MAX_SMELL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsTrace(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[type][i][j]&gt;ms) ms = Smell[type][i][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case RIGHT: for(i=xxx+1;i&lt;=xxx+ANT_EYESHOT;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=yyy-ANT_EYESHOT;j&lt;=yyy+ANT_EYESHOT;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!JudgeCanGo(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((i==food.xxx&amp;&amp;j==food.yyy&amp;&amp;type==SMELL_TYPE_FOOD)||<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (i==home.xxx&amp;&amp;j==home.yyy&amp;&amp;type==SMELL_TYPE_HOME))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ms = MAX_SMELL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(IsTrace(i,j)) continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Smell[type][i][j]&gt;ms) ms = Smell[type][i][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; }<BR>&nbsp; return(ms);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int IsTrace(int xxx,int yyy)<BR>{<BR>&nbsp; int i;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; for(i=0;i&lt;TRACE_REMEMBER;i++)<BR>&nbsp;&nbsp;&nbsp; if(ant[AntNow].tracex[i]==xxx&amp;&amp;ant[AntNow].tracey[i]==yyy) return(1);<BR>&nbsp; return(0);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int MaxLocation(int num1,int num2,int num3)<BR>{<BR>&nbsp; int maxnum;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(num1==0&amp;&amp;num2==0&amp;&amp;num3==0) return(0);
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; maxnum = num1;<BR>&nbsp; if(num2&gt;maxnum) maxnum = num2;<BR>&nbsp; if(num3&gt;maxnum) maxnum = num3;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(maxnum==num1) return(1);<BR>&nbsp; if(maxnum==num2) return(2);<BR>&nbsp; if(maxnum==num3) return(3);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int CanGo(int xxx,int yyy,int ddir)<BR>/**//* input: xxx,yyy - location of ant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ddir - now dir<BR>&nbsp;&nbsp; output: 0 - forward and left and right can go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 - forward can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 - left can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 - right can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 - forward and left can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 - forward and right can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 - left and right can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 - forward and left and right all can not go<BR>*/<BR>{<BR>&nbsp; int tx,ty,tdir;<BR>&nbsp; int okf,okl,okr;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; /**//* forward can go ? */<BR>&nbsp; tdir = ddir;<BR>&nbsp; tx = xxx;<BR>&nbsp; ty = yyy;<BR>&nbsp; switch(tdir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; ty–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; ty++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; tx–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case RIGHT: tx++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>&nbsp; if(JudgeCanGo(tx,ty)) okf = 1;<BR>&nbsp; else okf = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; /**//* turn left can go ? */<BR>&nbsp; tdir = TurnLeft(ddir);<BR>&nbsp; tx = xxx;<BR>&nbsp; ty = yyy;<BR>&nbsp; switch(tdir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; ty–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; ty++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; tx–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case RIGHT: tx++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>&nbsp; if(JudgeCanGo(tx,ty)) okl = 1;<BR>&nbsp; else okl = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; /**//* turn right can go ? */<BR>&nbsp; tdir = TurnRight(ddir);<BR>&nbsp; tx = xxx;<BR>&nbsp; ty = yyy;<BR>&nbsp; switch(tdir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; ty–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; ty++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; tx–;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; case RIGHT: tx++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>&nbsp; if(JudgeCanGo(tx,ty)) okr = 1;<BR>&nbsp; else okr = 0;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(okf&amp;&amp;okl&amp;&amp;okr) return(0);<BR>&nbsp; if(!okf&amp;&amp;okl&amp;&amp;okr) return(1);<BR>&nbsp; if(okf&amp;&amp;!okl&amp;&amp;okr) return(2);<BR>&nbsp; if(okf&amp;&amp;okl&amp;&amp;!okr) return(3);<BR>&nbsp; if(!okf&amp;&amp;!okl&amp;&amp;okr) return(4);<BR>&nbsp; if(!okf&amp;&amp;okl&amp;&amp;!okr) return(5);<BR>&nbsp; if(okf&amp;&amp;!okl&amp;&amp;!okr) return(6);<BR>&nbsp; if(!okf&amp;&amp;!okl&amp;&amp;!okr) return(7);<BR>&nbsp; return(7);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int JudgeCanGo(int xxx,int yyy)<BR>/**//* input: location to judeg<BR>&nbsp;&nbsp; output: 0 — can not go<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 — can go<BR>*/<BR>{<BR>&nbsp; int i,j;
</P><P style="TEXT-INDENT: 2em" align=left>&nbsp; if(xxx&lt;=0||xxx&gt;MAXX) return(0);<BR>&nbsp; if(yyy&lt;=0||yyy&gt;MAXY) return(0);<BR>&nbsp; if(block[xxx][yyy]) return(0);<BR>&nbsp; return(1);<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int TurnLeft(int ddir)<BR>{<BR>&nbsp; switch(ddir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; return(LEFT);<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; return(RIGHT);<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; return(DOWN);<BR>&nbsp;&nbsp;&nbsp; case RIGHT: return(UP);<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int TurnRight(int ddir)<BR>{<BR>&nbsp; switch(ddir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; return(RIGHT);<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; return(LEFT);<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; return(UP);<BR>&nbsp;&nbsp;&nbsp; case RIGHT: return(DOWN);<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>}
</P><P style="TEXT-INDENT: 2em" align=left>int TurnBack(int ddir)<BR>{<BR>&nbsp; switch(ddir)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; case UP:&nbsp; return(DOWN);<BR>&nbsp;&nbsp;&nbsp; case DOWN:&nbsp; return(UP);<BR>&nbsp;&nbsp;&nbsp; case LEFT:&nbsp; return(RIGHT);<BR>&nbsp;&nbsp;&nbsp; case RIGHT: return(LEFT);<BR>&nbsp;&nbsp;&nbsp; default:&nbsp; break;<BR>&nbsp; } /**//* of switch dir */<BR>}</P></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008715114236159</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008715114236159</guid>
    <pubDate>Fri, 15 Aug 2008 11:42:36 +0800</pubDate>
    <dcterms:modified>2008-08-15T11:42:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.12精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871403324683</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080813/gallery18-olympic080812.swf width=750 height=650 type=application/x-shockwave-flash quality="high"  ></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871403324683</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871403324683</guid>
    <pubDate>Thu, 14 Aug 2008 12:33:24 +0800</pubDate>
    <dcterms:modified>2008-08-15T12:13:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.11精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/314273752008713104251455</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080812/gallery18-olympic080811.swf width=750 height=650 type=application/x-shockwave-flash quality="high"  ></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/314273752008713104251455</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/314273752008713104251455</guid>
    <pubDate>Wed, 13 Aug 2008 10:42:51 +0800</pubDate>
    <dcterms:modified>2008-08-15T12:14:42+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008.8.10精彩瞬间]]></title>	
    <link>http://fisherpop.blog.163.com/blog/static/31427375200871214544346</link>
    <description><![CDATA[<div><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://pic.gettyimages.cn/html/gettyback/images1/20080811/gallery18-olympic080810.swf width=750 height=650 type=application/x-shockwave-flash quality="high"  ></div>]]></description>
	    <author><![CDATA[魚骨頭]]></author>
	    <comments>http://fisherpop.blog.163.com/blog/static/31427375200871214544346</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/blog/static/31427375200871214544346</guid>
    <pubDate>Tue, 12 Aug 2008 13:45:44 +0800</pubDate>
    <dcterms:modified>2008-08-15T12:15:40+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Linkin Park]]></title>	
    <link>http://img.bimg.126.net/photo/YBsaKJLk3aOpud-2XnAh5A==/606015624858923153.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/YBsaKJLk3aOpud-2XnAh5A==/606015624858923153.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/YBsaKJLk3aOpud-2XnAh5A==/606015624858923153.jpg" border="0" width="240" height="180" alt="Linkin Park 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/YBsaKJLk3aOpud-2XnAh5A==/606015624858923153.jpg</guid>
    <pubDate>Fri, 12 Sep 2008 23:21:24 +0800</pubDate>
    <dcterms:modified>2008-09-12T23:21:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  The Mummy 3_木乃伊3]]></title>	
    <link>http://img.bimg.126.net/photo/4aLwET6KMS-LemU5c92r_A==/4271101296608087019.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/4aLwET6KMS-LemU5c92r_A==/4271101296608087019.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/4aLwET6KMS-LemU5c92r_A==/4271101296608087019.jpg" border="0" width="161" height="240" alt="The Mummy 3_木乃伊3 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/4aLwET6KMS-LemU5c92r_A==/4271101296608087019.jpg</guid>
    <pubDate>Sun, 7 Sep 2008 13:28:38 +0800</pubDate>
    <dcterms:modified>2008-09-07T13:28:38+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  十全九美]]></title>	
    <link>http://img.bimg.126.net/photo/tiTxV0RH1cNKB26oe2sudQ==/577305177234416925.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/tiTxV0RH1cNKB26oe2sudQ==/577305177234416925.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/tiTxV0RH1cNKB26oe2sudQ==/577305177234416925.jpg" border="0" width="168" height="240" alt="十全九美 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/tiTxV0RH1cNKB26oe2sudQ==/577305177234416925.jpg</guid>
    <pubDate>Sun, 7 Sep 2008 13:28:33 +0800</pubDate>
    <dcterms:modified>2008-09-07T13:28:33+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Beijing 2008]]></title>	
    <link>http://img.bimg.126.net/photo/KujN3pFQ4f5xVNh7yRdGYQ==/3952753097948163741.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/KujN3pFQ4f5xVNh7yRdGYQ==/3952753097948163741.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/KujN3pFQ4f5xVNh7yRdGYQ==/3952753097948163741.jpg" border="0" width="240" height="226" alt="Beijing 2008 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/KujN3pFQ4f5xVNh7yRdGYQ==/3952753097948163741.jpg</guid>
    <pubDate>Sat, 9 Aug 2008 17:11:41 +0800</pubDate>
    <dcterms:modified>2008-08-09T17:11:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  NewsMedia_16671]]></title>	
    <link>http://img.bimg.126.net/photo/74SOi2iWDXbZOXUAkpy4eQ==/897342225754213418.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/74SOi2iWDXbZOXUAkpy4eQ==/897342225754213418.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/74SOi2iWDXbZOXUAkpy4eQ==/897342225754213418.jpg" border="0" width="113" height="240" alt="NewsMedia_16671 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/74SOi2iWDXbZOXUAkpy4eQ==/897342225754213418.jpg</guid>
    <pubDate>Sat, 9 Aug 2008 17:11:39 +0800</pubDate>
    <dcterms:modified>2008-08-09T17:11:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  08射雕]]></title>	
    <link>http://img.bimg.126.net/photo/m7v7FGqwBXFhSq5i61_tWw==/4303189443953455520.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/m7v7FGqwBXFhSq5i61_tWw==/4303189443953455520.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/m7v7FGqwBXFhSq5i61_tWw==/4303189443953455520.jpg" border="0" width="240" height="159" alt="08射雕 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/m7v7FGqwBXFhSq5i61_tWw==/4303189443953455520.jpg</guid>
    <pubDate>Mon, 28 Jul 2008 17:41:59 +0800</pubDate>
    <dcterms:modified>2008-07-28T17:41:59+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  射雕英雄傳]]></title>	
    <link>http://img.bimg.126.net/photo/jhAhyOMKC4IBAaUTCbvoHQ==/4303189443953455506.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/jhAhyOMKC4IBAaUTCbvoHQ==/4303189443953455506.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/jhAhyOMKC4IBAaUTCbvoHQ==/4303189443953455506.jpg" border="0" width="156" height="240" alt="射雕英雄傳 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/jhAhyOMKC4IBAaUTCbvoHQ==/4303189443953455506.jpg</guid>
    <pubDate>Mon, 28 Jul 2008 12:39:39 +0800</pubDate>
    <dcterms:modified>2008-07-28T12:39:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  The Dark Knight_蝙蝠侠6黑骑士]]></title>	
    <link>http://img.bimg.126.net/photo/Jlx7AFZvz7fx7Fb8d5SakQ==/567172078072487905.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/Jlx7AFZvz7fx7Fb8d5SakQ==/567172078072487905.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/Jlx7AFZvz7fx7Fb8d5SakQ==/567172078072487905.jpg" border="0" width="161" height="240" alt="The Dark Knight_蝙蝠侠6黑骑士 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/Jlx7AFZvz7fx7Fb8d5SakQ==/567172078072487905.jpg</guid>
    <pubDate>Wed, 23 Jul 2008 22:20:35 +0800</pubDate>
    <dcterms:modified>2008-07-23T22:20:35+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Diablo III]]></title>	
    <link>http://img.bimg.126.net/photo/6KYbKYVR9j8w_xN0Gh7iyQ==/3952190147995057860.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/6KYbKYVR9j8w_xN0Gh7iyQ==/3952190147995057860.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/6KYbKYVR9j8w_xN0Gh7iyQ==/3952190147995057860.jpg" border="0" width="240" height="192" alt="Diablo III 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/6KYbKYVR9j8w_xN0Gh7iyQ==/3952190147995057860.jpg</guid>
    <pubDate>Mon, 21 Jul 2008 20:21:05 +0800</pubDate>
    <dcterms:modified>2008-07-21T20:21:05+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Starship Troopers3_星河战队3]]></title>	
    <link>http://img.bimg.126.net/photo/6IRGzP27_MzM-YoIpvJKdg==/4552576273318832318.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/6IRGzP27_MzM-YoIpvJKdg==/4552576273318832318.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/6IRGzP27_MzM-YoIpvJKdg==/4552576273318832318.jpg" border="0" width="161" height="240" alt="Starship Troopers3_星河战队3 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/6IRGzP27_MzM-YoIpvJKdg==/4552576273318832318.jpg</guid>
    <pubDate>Sun, 20 Jul 2008 10:23:08 +0800</pubDate>
    <dcterms:modified>2008-07-20T10:23:08+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Hancock_全民超人汉考克]]></title>	
    <link>http://img.bimg.126.net/photo/Z2VgmOdAjoL0bPbw0KQBCQ==/3387551344713496157.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/Z2VgmOdAjoL0bPbw0KQBCQ==/3387551344713496157.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/Z2VgmOdAjoL0bPbw0KQBCQ==/3387551344713496157.jpg" border="0" width="166" height="240" alt="Hancock_全民超人汉考克 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/Z2VgmOdAjoL0bPbw0KQBCQ==/3387551344713496157.jpg</guid>
    <pubDate>Wed, 9 Jul 2008 23:16:30 +0800</pubDate>
    <dcterms:modified>2008-07-09T23:16:30+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  赤壁_Red Cliff]]></title>	
    <link>http://img.bimg.126.net/photo/rmXQSQ91X6ABzKgdGvEJdg==/2047448980593884896.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/rmXQSQ91X6ABzKgdGvEJdg==/2047448980593884896.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/rmXQSQ91X6ABzKgdGvEJdg==/2047448980593884896.jpg" border="0" width="156" height="240" alt="赤壁_Red Cliff 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/rmXQSQ91X6ABzKgdGvEJdg==/2047448980593884896.jpg</guid>
    <pubDate>Mon, 7 Jul 2008 17:42:03 +0800</pubDate>
    <dcterms:modified>2008-07-07T17:42:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  DSC01370]]></title>	
    <link>http://img.bimg.126.net/photo/y5ef7QHTt5dfkad_SNlIqg==/904379100171860152.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/y5ef7QHTt5dfkad_SNlIqg==/904379100171860152.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/y5ef7QHTt5dfkad_SNlIqg==/904379100171860152.jpg" border="0" width="240" height="180" alt="DSC01370 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/y5ef7QHTt5dfkad_SNlIqg==/904379100171860152.jpg</guid>
    <pubDate>Sat, 28 Jun 2008 01:13:36 +0800</pubDate>
    <dcterms:modified>2008-06-28T01:13:36+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  DSC01366]]></title>	
    <link>http://img.bimg.126.net/photo/Y1j3Y59j-MScZ2NROC9yrw==/904379100171860139.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/Y1j3Y59j-MScZ2NROC9yrw==/904379100171860139.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/Y1j3Y59j-MScZ2NROC9yrw==/904379100171860139.jpg" border="0" width="240" height="180" alt="DSC01366 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/Y1j3Y59j-MScZ2NROC9yrw==/904379100171860139.jpg</guid>
    <pubDate>Sat, 28 Jun 2008 01:13:33 +0800</pubDate>
    <dcterms:modified>2008-06-28T01:13:33+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  DSC01367]]></title>	
    <link>http://img.bimg.126.net/photo/RnL3m53bQkKNN2TRO3QWjw==/3959789972366277657.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/RnL3m53bQkKNN2TRO3QWjw==/3959789972366277657.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/RnL3m53bQkKNN2TRO3QWjw==/3959789972366277657.jpg" border="0" width="240" height="180" alt="DSC01367 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/RnL3m53bQkKNN2TRO3QWjw==/3959789972366277657.jpg</guid>
    <pubDate>Sat, 28 Jun 2008 01:13:30 +0800</pubDate>
    <dcterms:modified>2008-06-28T01:13:30+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  Kung Fu Panda_功夫熊猫]]></title>	
    <link>http://img.bimg.126.net/photo/hSzYdM6Agyg9NukCGBl5cw==/911415974589740467.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/hSzYdM6Agyg9NukCGBl5cw==/911415974589740467.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/hSzYdM6Agyg9NukCGBl5cw==/911415974589740467.jpg" border="0" width="171" height="240" alt="Kung Fu Panda_功夫熊猫 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/hSzYdM6Agyg9NukCGBl5cw==/911415974589740467.jpg</guid>
    <pubDate>Tue, 24 Jun 2008 19:30:39 +0800</pubDate>
    <dcterms:modified>2008-06-24T19:30:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  蜡烛]]></title>	
    <link>http://img.bimg.126.net/photo/HCQpy3EQzhs0w4Vuwx0i9Q==/2886244411191759663.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/HCQpy3EQzhs0w4Vuwx0i9Q==/2886244411191759663.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/HCQpy3EQzhs0w4Vuwx0i9Q==/2886244411191759663.jpg" border="0" width="200" height="200" alt="蜡烛 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/HCQpy3EQzhs0w4Vuwx0i9Q==/2886244411191759663.jpg</guid>
    <pubDate>Tue, 20 May 2008 09:28:29 +0800</pubDate>
    <dcterms:modified>2008-05-20T09:28:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  55842773]]></title>	
    <link>http://img.bimg.126.net/photo/glYTCF6G0gpe1TRawHvu4A==/5353654057037019441.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/glYTCF6G0gpe1TRawHvu4A==/5353654057037019441.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/glYTCF6G0gpe1TRawHvu4A==/5353654057037019441.jpg" border="0" width="159" height="240" alt="55842773 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/glYTCF6G0gpe1TRawHvu4A==/5353654057037019441.jpg</guid>
    <pubDate>Mon, 19 May 2008 20:49:03 +0800</pubDate>
    <dcterms:modified>2008-05-19T20:49:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  200356522-001]]></title>	
    <link>http://img.bimg.126.net/photo/DfAKNKWpzNfrfBBdEpxrnQ==/5353654057037019431.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/DfAKNKWpzNfrfBBdEpxrnQ==/5353654057037019431.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/DfAKNKWpzNfrfBBdEpxrnQ==/5353654057037019431.jpg" border="0" width="240" height="169" alt="200356522-001 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/DfAKNKWpzNfrfBBdEpxrnQ==/5353654057037019431.jpg</guid>
    <pubDate>Mon, 19 May 2008 20:49:01 +0800</pubDate>
    <dcterms:modified>2008-05-19T20:49:01+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[相片:  IMG_9952]]></title>	
    <link>http://img.bimg.126.net/photo/cmmcoOIQD_CHmh4zK0enzg==/917326949100709642.jpg</link>
    <description><![CDATA[<div>
	<a href="http://img.bimg.126.net/photo/cmmcoOIQD_CHmh4zK0enzg==/917326949100709642.jpg" target="_blank">
	<img src="http://img.bimg.126.net/photo/cmmcoOIQD_CHmh4zK0enzg==/917326949100709642.jpg" border="0" width="240" height="160" alt="IMG_9952 平靜海洋裡那一朵跳躍的浪花~！ 一根骨頭的眞實故事……"/>
	</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/cmmcoOIQD_CHmh4zK0enzg==/917326949100709642.jpg</guid>
    <pubDate>Mon, 5 May 2008 20:34:34 +0800</pubDate>
    <dcterms:modified>2008-05-05T20:34:34+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[web:  骨頭堆]]></title>	
    <link>http://fisherpop.blog.163.com/prevResource.do?selectId=fks_084069087083084074080087074064085082083068087081083</link>
    <description><![CDATA[<ul>
	<li>
	<a href="http://sunchen1985.blog.163.com/" target="_blank">似水年华 — MORNING</a>
	</li>

	<li>
	<a href="http://dionlei.blog.sohu.com/" target="_blank">奶油宣言 — Dion</a>
	</li>

	<li>
	<a href="http://blog.sina.com.cn/allenivy" target="_blank">SSJJ之窝 － 顺顺　</a>
	</li>

	<li>
	<a href="http://youyangqinzi.blogcn.com/index.shtml" target="_blank">琴子的骨头堆 — 悠扬琴子</a>
	</li>

	<li>
	<a href="http://niceyizu.blogcn.com/index.shtml" target="_blank">琳琅 — 李小厨</a>
	</li>

	<li>
	<a href="http://vicky14.blogcn.com/index.shtml" target="_blank">大树屋子 — Vicky</a>
	</li>
</ul>]]></description>
	    <author><![CDATA[fisherpop]]></author>
    <guid isPermaLink="false">collection/static/fks_084069087083084074080087074064085082083068087081083</guid>
    <pubDate>Sun, 23 Dec 2007 14:12:52 +0800</pubDate>
    <dcterms:modified>2007-12-23T14:12:52+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[魚骨頭关注的博友]]></title>	
    <link>http://fisherpop.blog.163.com/friends</link>
    <description><![CDATA[<div>
			<a href="http://sunchen1985.blog.163.com/" target="_blank"><img src="http://ava.bimg.126.net/photo/wGD85G8yCa1jFkbnD2f70g==/226024406298686333.jpg" border="0" />MORNING</a>
			<a href="http://my-only-sky.blog.163.com/" target="_blank"><img src="http://ava.bimg.126.net/photo/NwmLvWFt9LLipZElWlNHDw==/290482175965700529.jpg" border="0" />秋小狸</a>
			<a href="http://blog.163.com/xnxwm@126/" target="_blank"><img src="http://ava.bimg.126.net/photo/n9nOKu-zrgOnsh3LiznTDg==/313000174102448438.jpg" border="0" />xnxwm@126</a>
</div>]]></description>
    <guid isPermaLink="true">http://fisherpop.blog.163.com/friends</guid>
    <pubDate>Tue, 1 Jan 2008 00:00:00 +0800</pubDate>
    <dcterms:modified>2008-01-01T00:00:00+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>