| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2769 人关注过本帖
标题:[源码]比Conway生命游戏更酷的Langton蚂蚁
只看楼主 加入收藏
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
[源码]比Conway生命游戏更酷的Langton蚂蚁
不知道有多少人已经熟知 Conway 的生命游戏,但却从没听说过 Langton 的蚂蚁游戏?反正我是其中之一。直到今天我才听说了这个比生命游戏更酷的游戏—— Langton 的蚂蚁。这也是一个二维自动机形式的零玩家游戏,不过我觉得它比生命游戏有趣得多。这有两个理由:

1. 它的算法过程更简单。初始时,蚂蚁位于一张空白画布的某个方格里。
如果当前蚂蚁在白色方格上,则对当前方格反色,左转 90 度,前进一格;
如果当前蚂蚁在黑色方格上,则对当前方格反色,右转 90 度,前进一格。如此反复。

Langton 的蚂蚁游戏(图):
图片附件: 游客没有浏览图片的权限,请 登录注册


2.它的结果更有意思——刚开始,画布上将生成毫无规律的复杂图形,实在让人很难相信这竟是由如此简单的规则产生的;
直到上万步之后,整个过程才会进入循环,画出有规律的图形。

下面是一个模拟 Langton 蚂蚁的C#小程序(修改代码可以改变蚂蚁数目~~)。你有兴趣看到第 10000 步吗?

注意:最好不要尝试在图形区域里点鼠标什么的。

Langton.rar (53.28 KB)


[ 本帖最后由 vxbb 于 2011-3-31 23:01 编辑 ]
搜索更多相关主题的帖子: 自动机 游戏 
2011-03-31 22:53
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
哎 ...

[ 本帖最后由 vxbb 于 2011-4-1 13:34 编辑 ]

QQ:491697374  Mail:vxbb@
2011-04-01 10:17
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
收藏
得分:20 
写得不错,注释很多,顶个多只蚂蚁能互相影响更有意思,超出边界让它们再回来更好
提个建议
最好用线程来执行,现在这样,开始运行时,窗体已经完全不能操作,当然用线程的话会复杂很多...
个人认为,WINFORM的程序如果要运算比较复杂的东西,都应该开辟新的线程来执行,避免给人“程序无响应”的感觉
第二次点击Start时无影响...
2011-04-01 10:54
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
回复 3楼 qubo1982
总算是有回复了。

现在,相同颜色的蚂蚁可以互相影响。

刚开始用了timer。 不会出现停止响应。但是就算设置为 1ms也比较慢(比这个死循环慢些)。
所以直接给它个死循环了。这样快些看到结果。

多线程并上gdi+ 搭配起来有点难额,,wo继续想…

QQ:491697374  Mail:vxbb@
2011-04-01 13:29
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
回复 3楼 qubo1982
  还有点二次start,因为蚂蚁都跑完了,没重置状态。
程序代码:
        private bool isComplete()
        {
            bool flag = true;
            for (int i = 0; i < ants.Count; i++)
            {
                Ant ant = ants[i];
                if (!)
                {
                    flag = false;
                    break;
                }
            }
            return flag;
        }


QQ:491697374  Mail:vxbb@
2011-04-01 13:32
cdinten
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2006-10-15
收藏
得分:0 
很有意思,学习下
2011-04-07 14:32
xxaccp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-18
收藏
得分:0 
回复 5楼 vxbb
确切的说 是因为 蚂蚁的位置已经到达边界了 ,需要 重置它的 位置和 是否完成属性。
2012-12-18 22:53
xxaccp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-18
收藏
得分:0 
lz 的思路不错。利用一个panel 完成了界面的刷新操作。这样既没有锁到主要的UI 而且看到了实时的结果,最后一点 想到用画布果然妙啊,我刚开始一直用字符 “0”或者空白在控制台里现实 始终看不到好的效果。原来还是边界的问题。
2012-12-18 22:58
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
回复 8楼 xxaccp
哈哈 总算是有人注意到了

QQ:491697374  Mail:vxbb@
2013-02-27 05:09
爱上诺诺
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2011-8-30
收藏
得分:0 
谢谢分享哈
2013-05-06 17:18
快速回复:[源码]比Conway生命游戏更酷的Langton蚂蚁
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021455 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved