数据结构和算法主题:
1.
一、总结
康威生命游戏是英国数学家约翰·康威于1970年发明的元胞自动机,它可以让计算机在一定程度上模拟宇宙中生物体最基本的生命规律。 它可以使生命从最初的状态进化到意想不到的状态。
作为这款游戏的用户,也是这款游戏中每一个生命的“神”,我们需要做的只有一件事:设计这个生命世界的最初面貌,也就是哪些生命生存,哪些生命消亡。 接下来,让世界上的生命按照规则继续进化。 康威的生命游戏不仅仅是一个游戏,它简单的规则和引人入胜的世界也能让人感受到一些生命的本质。 此外,借助康威的生命游戏,还可以构建通用计算机,因为这个游戏是图灵完备的。
本文将介绍康威生命游戏的规则、本题的抽象模型、康威生命游戏的代码实现,包括后端和前端实现,以及一些思考。
如果您想先尝试这款游戏,可以在 Plus 中点击并玩康威的生命游戏。
但请答应我,不要沉迷其中,记得回来看看它背后的故事。
2.
2.问题描述
康威的生命游戏规定了一个由无数小方块组成的无尽世界。 每个方块代表一个生命,有以下生命法则:
死亡:诞生:所有当前生命都会同时按上述规则进行处理更新,得到下一代生命,并确定下一代生命,如此重复。
根据以上规则,立方体中的生命有许多有趣的形态和变化。
震撼人生:
搬家生活:
不断繁衍的生命
3.
3. 问题抽象
为了解决康威生命游戏的代码实现,面向对象的设计和编程是一个很好的方法。
首先我们抽象这个游戏。 一般来说,其中有两个对象:生命,生命构成的世界。 并且它们有自己的属性和方法。
例如,
3.1 细胞类别
3.1 生活类
第一个是抽象生命的生命类:Cell(写为cell,代表生命)。
3.2 类
3.2 生活世界类别
其次,抽象出许多生命组成的世界类:(写为细胞世界,代表生命的世界)。
注意:康威生命游戏规定了一个无限的世界,但是这里的类定义的世界是有界的,这与康威生命游戏的规则略有不同。
4.
4. 实施
4.1 Java
基于上面的抽象,我们可以使用Java来设计和封装以上两个模型。
代码:
可以运行测试文件来模拟该游戏。
代码:
4.2 反应
上述Java中的实现只是在命令行上实现的。 为了给用户提供更好的操作体验,我用React做了一个Web版的康威的生命游戏,并且封装了之前用Java实现的两个类。 最后发布于 Plus。
作为这个世界的“神”,用户可以通过点击方块来创造或毁灭生命,设计自己的世界。 点击开始后,你就可以让世界开始运转,观察世界生活的变化。
5.
5.思考
康威的生命游戏体现了无序中的秩序,可以从简单的逻辑演化出有趣的模式,也可以让我们对生命有一些理解。
我使用数据结构、算法和面向对象编程来尝试实现这个游戏,并且我也尝试过React在网页上实现它。 它给了我锻炼的机会,也获得了很多经验。 当然,我也发现了很多不足。
康威的生命游戏是图灵完备的,因此一个团队基于这个游戏开发了一台通用计算机(通用图灵机),并用它来运行俄罗斯方块游戏。 记住上面提到的滑翔机风格。 这种模式与电流的传输非常相似。 同样,该团队使用修改后的生命游戏来模拟从最基本的电线、电路、逻辑门、触发器、时钟等到寄存器、内存和指令集的所有内容。 最后用计算机进行了模拟。 非常令人震惊。 如果有机会,可以深入研究一下:
构建一个生命游戏中的游戏
参考
构建一个生命游戏中的游戏
的生命游戏 -
的生命游戏 - Plus
生命的游戏-,
康威的生命游戏是如何建造一台计算机的?
康威的生命游戏——孤独会杀人,拥挤也会杀人
尾奏
尾巴
如果您也对康威的生命游戏及其应用感兴趣,或者有相关的想法和想法,欢迎在下方留言交流。
继续研究OOP、数据结构和算法的应用。
最后希望大家一起交流、分享、指出问题,谢谢!