今儿个心血来潮,想搞点有意思的玩意儿,于是乎我就盯上康威的生命游戏。这名字听起来就挺玄乎,就是一个模拟生命演化的格子游戏。
我连这是啥都不知道,就到处瞎搜。看些资料,大概明白这游戏是在一个无限大的格子里玩的,每个格子有两种状态:活的或死的。然后根据周围格子的状态,按照一定的规则来决定下一个时刻这个格子是死是活。
这规则说起来也简单:
- 如果一个活着的格子周围的活着的格子少于两个,那它就“死”(孤独死)。
- 如果一个活着的格子周围的活着的格子有两个或三个,那它就继续活着。
- 如果一个活着的格子周围的活着的格子多于三个,那它也“死”(挤死)。
- 如果一个死着的格子周围的活着的格子正好是三个,那它就“活”过来(繁殖)。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
琢磨半天,我觉得这玩意儿应该能用代码实现出来,我就开始动手。
我得弄个格子出来。我就用一个二维数组来表示这个格子世界,用 0 表示死细胞,1 表示活细胞。
然后,我写个函数来计算每个格子周围活着的细胞数量。这部分代码写起来有点绕,我反复调试好几次,数格子数的我眼都花。
我又写个函数,根据上面的规则,来更新整个格子世界的状态。这一步也挺关键,我得保证每个格子的状态都正确更新。
我加个循环,让这个格子世界不断地演化下去。为能看到效果,我还加个简单的输出,把每一代的格子状态都打印出来。
跑起来一看,还真有点意思!不同的初始状态,演化出来的图案还真不一样,有的稳定不变,有的不断变化,有的还会周期性地闪烁,真是太神奇!
虽然这回实践,代码写得乱七八糟,还有很多可以优化的地方,比如可以用图形界面来显示,而不是简单的文字输出,还可以加一些交互,让用户可以自己设定初始状态等等,但是这回折腾让我对这个生命游戏有更直观的认识,以后有时间再慢慢完善!