生命游戏
2012-08-15 15:50
162 查看
生命游戏,又称生命棋,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。
它最初于1970年10月在《科学美国人》(杂志上马丁·葛登能的“数学游戏”专栏出现。
生命游戏中,对于任意位置,规则只有三条:(如图,黑色为细胞,白色为无细胞)
当周围有3个细胞时,该位置产生细胞
当周围有2个细胞时,该位置维持原样
其他情况,该位置变为无细胞
3个细胞时,该位置产生细胞,称作复活
1个细胞时,该细胞会因为孤独而死
4个或者过多时,会因为太过拥挤而死。
下面我给出了实现,不过好像有点问题,有兴趣的可以一起讨论。
一个cell类,代表细胞,一个container类,基于Panel的面板,用户绘制细胞。主界面中有个定时器,3秒钟重新对所有的细胞重新计算一次。
工程文件下载:http://files.cnblogs.com/linbirg/GameLife.rar
它最初于1970年10月在《科学美国人》(杂志上马丁·葛登能的“数学游戏”专栏出现。
生命游戏中,对于任意位置,规则只有三条:(如图,黑色为细胞,白色为无细胞)
当周围有3个细胞时,该位置产生细胞
当周围有2个细胞时,该位置维持原样
其他情况,该位置变为无细胞
3个细胞时,该位置产生细胞,称作复活
1个细胞时,该细胞会因为孤独而死
4个或者过多时,会因为太过拥挤而死。
下面我给出了实现,不过好像有点问题,有兴趣的可以一起讨论。
一个cell类,代表细胞,一个container类,基于Panel的面板,用户绘制细胞。主界面中有个定时器,3秒钟重新对所有的细胞重新计算一次。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace ThinkingModel { class Cell { private int m_x; private int m_y; private int m_width; private Color m_color; private readonly Color ALIVE_COLOR = Color.Green; private readonly Color DEAD_COLOR = Color.DarkGray; public void draw(Graphics gc) { Brush tbrush = new SolidBrush(Color.Black); Brush fbrush = new SolidBrush(m_color); int penWidth = m_width / 10; Pen aPen = new Pen(tbrush, penWidth); gc.DrawRectangle(aPen, m_x, m_y, m_width, m_width); gc.FillRectangle(fbrush, m_x + penWidth, m_y + penWidth, m_width - penWidth, m_width - penWidth); } public bool isDead() { return m_color == DEAD_COLOR; } public bool isAlive() { return m_color == ALIVE_COLOR; } public void setDead() { m_color = DEAD_COLOR; } public void setAlive() { m_color = ALIVE_COLOR; } } }
工程文件下载:http://files.cnblogs.com/linbirg/GameLife.rar
相关文章推荐
- C语言经典算法 - 生命游戏
- NKOI 1023 生命游戏
- 生命游戏
- 3D塔防游戏实现 3 怪物门以及生命塔(Feekood语言)
- python实现生命游戏的示例代码(Game of Life)
- 生命游戏/Game of Life的Java实现(转)
- 忽然间对 生命的游戏 着了魔
- 约翰·康威的 生命游戏
- 一个关于生命游戏的程序
- 练手:康威生命游戏demo
- 康威生命游戏的学习
- 生命游戏简介及算法分析(整理)
- 使用PySide实现生命游戏
- 2018年第八届蓝桥杯 JavaB组国赛 第二题 生命游戏 解答
- 走进分形曲线和生命游戏探索
- 用c语言演绎“生命游戏”
- React实现生命游戏
- 用生命在做游戏
- 刷屏新工具:史上最壮观的生命游戏构造图
- 生命游戏