`
橡树心
  • 浏览: 48208 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

生命游戏(Life game)

阅读更多
问题说明:

       生命游戏,为1970年英国数学家J.H.Conway所提出,某一细胞的邻居包括上,下,左,右,左上,左下,右上与右下相邻的细胞,游戏规则如下:

1,孤单死亡:如果细胞的邻居小于一个,则该细胞在下一个状态死亡。

2,拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一个状态死亡。

3,稳定:如果细胞的邻居为两个或三个,则该细胞在下一个状态稳定。

4,复活:如果某位置原无细胞存活,而该位置的邻居为三个,则该位置将复活一个细胞。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class LifeGame {
    private boolean[][] map;
    private boolean[][] newmap;
    
    public LifeGame(int maxRow, int maxColumn) {
        map = new boolean[maxRow][maxColumn];
        newmap = new boolean[maxRow][maxColumn];
    }
    
    public void setCell(int x, int y) {
        map[x][y] = true;
    }
    
    public void next() {
        for(int row = 0; row < map.length; row++) {
            for(int col = 0; col < map[0].length; col++) {
               switch (neighbors(row, col)) {
                  case 0: 
                  case 1: 
                  case 4: 
                  case 5: 
                  case 6: 
                  case 7: 
                  case 8: 
                     newmap[row][col] = false; 
                     break; 
                  case 2: 
                     newmap[row][col] = map[row][col]; 
                     break; 
                  case 3: 
                     newmap[row][col] = true; 
                     break; 
               } 
            }
         }

         copyMap();
    }

    public void outputMap() throws IOException { 
        System.out.println("\n\nGame of life cell status"); 
        for(int row = 0; row < map.length; row++) { 
            System.out.print("\n "); 
           for(int col = 0; col < map[0].length; col++) 
              if(map[row][col] == true) 
                  System.out.print('#'); 
              else 
                  System.out.print('-'); 
        } 
    }
    
    private void copyMap() {
        for(int row = 0; row < map.length; row++) 
           for(int col = 0; col < map[0].length; col++) 
              map[row][col] = newmap[row][col]; 
    }
    
    private int neighbors(int row, int col) {
        int count = 0; 

        for(int r = row-1; r <= row+1; r++) 
           for(int c = col-1; c <= col+1; c++) { 
              if(r < 0 || r >= map.length ||
                 c < 0 || c >= map[0].length) 
                 continue; 
              if(map[r][c] == true) 
                 count++; 
           } 

        if(map[row][col] == true) 
           count--; 
         
        return count; 
    } 
    
    public static void main(String[] args) 
                 throws NumberFormatException, IOException {
        BufferedReader bufReader = 
            new BufferedReader(
                    new InputStreamReader(System.in));
        
        LifeGame game = new LifeGame(10, 25);
        
        System.out.println("Game of life Program"); 
        System.out.println(
                   "Enter x, y where x, y is living cell");
        System.out.println("0 <= x < 10, 0 <= y < 25"); 
        System.out.println("Terminate with x, y = -1, -1");
        
        while(true) {
            String[] strs = bufReader.readLine().split(" ");
            int row = Integer.parseInt(strs[0]);
            int col = Integer.parseInt(strs[1]);

            if(0 <= row && row < 10 && 0 <= col && row < 25) 
                game.setCell(row, col);
            else if(row == -1 || col == -1) {
                break;
            }
            else { 
                System.out.print(
                         "(x, y) exceeds map ranage!");
            }
        }
        
        while(true) {
            game.outputMap();
            game.next();

            System.out.print(
                         "\nContinue next Generation ? ");
            
            String ans = bufReader.readLine().toUpperCase();

            if(!ans.equals("Y"))
                break;
        } 
    }
}

分享到:
评论

相关推荐

    生命游戏 LifeGame

    "生命游戏"(LifeGame),又称为康威生命游戏,是由数学家约翰·何顿·康威在1970年提出的一种简单的细胞自动机。它是一个零玩家游戏,规则简单,但能产生复杂的动态行为,包括模拟生物进化、繁殖、竞争等现象。在这...

    生命游戏 lifegame 升级版

    生命游戏Lifegame升级版是一个结合了理论与实践的项目,它展示了如何使用MFC和CButtonST来构建一个具有视觉吸引力的模拟应用。虽然它在二次开发方面可能存在一定的难度,但对于学习和理解生命游戏的原理,以及MFC...

    life-game_生命游戏_lifegame元胞_元胞自动机matlab_

    生命游戏,全称为“Conway's Game of Life”,是由英国数学家约翰·康威(John Horton Conway)在1970年提出的一种简单的模拟生物演化的数学模型。它以其简洁的规则和复杂的演化模式,成为了元胞自动机(Cellular ...

    life game 生命游戏代码实现

    - **LifeGame.jar**:这是一个Java可执行的JAR文件,包含了`Life`类和其他必要的资源,用户可以通过运行这个文件来启动生命游戏的程序。 - **Life.java**:这是源代码文件,其中包含了用Java编写的"生命游戏"的实现...

    python实现生命游戏的示例代码(Game of Life)

    ### Python 实现的生命游戏(Game of Life) #### 一、引言 生命游戏(Game of Life)是一种零玩家的策略游戏,由英国数学家约翰·何顿·康威于1970年发明。游戏规则简单但演化过程复杂,能够产生各种各样的模式,...

    生命游戏(game of life)

    《生命游戏》是英国数学家约翰·康威(John Horton Conway)在1970年提出的一个著名的细胞自动机模型,它是一个简单的模拟生物演化的系统。在这个游戏中,每个细胞有生与死两种状态,根据周围细胞的状态变化,细胞会...

    生命游戏 源码 vc Game of life

    《生命游戏》(Game of Life)是英国数学家约翰·康威提出的一种细胞自动机模型,它通过简单的规则模拟复杂的生命现象。在这个源码中,我们看到的是使用Visual C++(VC)编写的版本,这使得程序员能够用C++语言来...

    在C++中实现生命游戏 (Game of Life) ,并 遵循一些限制 ·生命游戏的规则 一个无限的二维正交方格单元格网格

    在C++中实现生命游戏 (Game of Life) ,并 遵循一些限制。 ·生命游戏的规则 一个无限的二维正交方格单元格网格。 每个单元格处于两种可能的状态之一: 存活 或死亡。 每个单元格与其八个邻居进行交互:存活的 单元格...

    康威生命游戏(Game of Life)

    《康威生命游戏》是英国数学家约翰·何顿·康威提出的一种细胞自动机模型,也被称为“生命游戏”。这个游戏并非传统意义上的电子游戏,而是一种抽象的模拟系统,通过简单的规则来展示复杂的行为和模式演化。在Delphi...

    life game -进化论的生命模拟游戏

    《生命游戏》的可执行文件LifeGame4.exe,是玩家打开游戏世界的钥匙。在Windows操作系统中,只需双击这个.exe文件,玩家便能启动游戏,开始一段探索生命奥秘的旅程。这个过程既简单又快捷,使得任何对生命演化感兴趣...

    生命游戏源代码

    生命游戏lifegame的matlab代码。也是元胞自动机的一种应用。

    c++实现lifegame

    生命游戏,全称为Conway's Game of Life,是由英国数学家约翰·何顿·康威在1970年提出的一种细胞自动机模型。这个模拟游戏基于简单的规则,却能展现出复杂且令人惊讶的行为模式,因此在计算机科学和数学领域具有...

    LifeGame.zip

    在"LifeGame"这个项目中,核心算法是生命游戏的更新规则。这些规则基于以下四条: 1. **静止**:如果一个细胞周围有三个活细胞,它会在下一轮保持存活。 2. **繁殖**:如果一个细胞是活的,并且周围有两个活细胞,...

    3D_game of life_3d元胞自动机_三维生命游戏_gameoflife_生命游戏

    在计算机科学和数学的世界里,有一个名为“生命游戏”(Game of Life)的经典模型,它是由英国数学家约翰·康威(John Horton Conway)在1970年提出的。这个简单的规则系统,通过二维网格上的细胞状态变化,揭示出...

    QT4编写的life game源码

    生命游戏,全称为Conway's Game of Life,是由英国数学家约翰·何顿·康威在1970年提出的一种零玩家游戏,它是一种模拟细胞自动机的模型,其运行完全基于预设的简单规则。这个小游戏是利用QT4框架进行开发的,QT4是...

    LifeGame Csharp

    生命游戏其实是一个零玩家游戏,英文名叫Game of Life,也称生命棋。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞...

    生命游戏Life_Game.zip

    这个C#实现的小游戏是一个简单的猜数字游戏,让玩家猜一个1到100之间的随机生成的数字。以下是对这个小游戏的分析: Random 类的使用:游戏开始时,使用 Random 类生成一个1到100之间的随机数作为要猜的数字。 ...

    生命游戏 细胞自动机 元胞自动机 Game Of Life

    生命游戏,全称为“Game Of Life”,是由英国数学家约翰·康威(John Horton Conway)在1970年提出的一种简单的模拟生物演化的计算模型,它是细胞自动机的一个经典实例。细胞自动机是一种在离散空间和离散时间上的...

    生命游戏、game of life的源代码 gol.py

    生命游戏的演化代码,用python写的可以控制演化的代数可以控制演化的单元

    GameOfLife_java.rar_game of life_game of life ja_元胞自动机_生命_生命游戏

    《生命游戏》(Game of Life)是由英国数学家约翰·康威在1970年提出的一种简单的模拟生命过程的模型,它是一种元胞自动机的典型应用。元胞自动机是一种离散的时间和空间的计算模型,由一维、二维或更高维度的格子...

Global site tag (gtag.js) - Google Analytics