生命游戏(Game of Life)
想起以前看到这个生命游戏,这个题目本身是要求用C来的,现在考虑用VB写一下。我试了一下,认为这个题目适合新手,可以锻炼以下几个方面的内容:1、数组,特别是二维数组
2、绘图
---------------------
题目的要求如下:
1.题目描述
生命游戏(GameofLife)是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。在一个二维矩形世界中,每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。
规则1.如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变)。
规则2.如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
规则3.在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)
最早研究细胞自动机的科学家是冯·诺伊曼。后来人工生命之父克里斯·朗顿进一步发展了元胞自动机理论,由此认为生命诞生于“混沌的边缘”,从此开辟了“人工生命”这一新兴的交叉学科。
本题目要求你设计一个生命游戏,开始时设置好生命的初始状态(也可以随机设置),模拟其中生命随时间的变化过程。
2.设计提示
1)细胞的世界可以用二维数组表示,每个生命的状态只有两种,即生或死;
2)为便于在屏幕上打印,世界的大小不宜过大,可以取20行70列;
3)程序开始时,设置生命的初始状态,即哪些地方有活着的生命。然后根据上述规则计算出下一个时刻生命的状态,并打印出来;
-------------------
注1:这个题目实在是太古老了,所以最后的要求是打印,其实应该是显示
注2:规则已被精练化,很适合写代码。未精练的版本如下:
1.一個活的格子若只有一個或沒有鄰居,在下一秒將因寂寞而亡.
2.一個活的格子若有四個或四個以上的鄰居,在下一秒將因拥擠而亡.
3.一個活的格子若有二個或三個鄰居,在下一秒將継續活著.
4.一個死的格子若有三個鄰居,在下一秒將活過來.