您的位置  > 互联网

数据结构与算法:康威生命游戏(’sGameofLife)

数据结构和算法主题:

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、数据结构和算法的应用。

最后希望大家一起交流、分享、指出问题,谢谢!