`
googya
  • 浏览: 144079 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

生命游戏 game of life

阅读更多
生命游戏为1970年英国数学家J. H. Conway所提出,某一细胞的邻居包括上、下、左、右、左上、左下、右上与之相邻的细胞,游戏规则如下:
1.孤单死亡:如果细胞的邻居小于一个,则该细胞在下一次状态将死亡
2.拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一次状态将死亡
3.稳定:如果细胞的邻居为2或3个,则下一次状态为稳定存活
4.复活:如果某位置无细胞存活,而该位置的邻居为3个,则该位置将复活一个细胞
有题目的意思可以看出,当邻居个数为0、1、4、5、6、7、时,该细胞的下次状态为死亡
                      邻居个数为2时,该细胞的下次状态为稳定存活
                      邻居个数为3时,该细胞的下次状态为复活

class LifeGame
  def initialize(max_row,max_column)
    @map=[]
    @newmap=[]
    for i in 0...max_row
      @map<<[false]*max_column
      @newmap<<[false]*max_column
    end
  end

  def _cell(x,y)
    @map[x][y]=true
  end

  def _next
    for row in 0...(@map.size)
      for col in 0...(@map[0].length)
        n=_neighbors(row,col)
        if [0,1,4,5,6,7,8].include? n
          @newmap[row][col]=false
        elsif n==2
          @newmap[row][col]=@map[row][col]
        else n==3
          @newmap[row][col]=true
        end
#        case n
#        when n.in[0,1,4,5,6,7,8]
#          @newmap[row][col]=false
#        when n==2
#          @newmap[row][col]=@map[row][col]
#        when n==3
#          @newmap[row][col]=true
#        end
      end
      for i in 0..@map.size-1
        for j in 0..@map[0].length-1
          @map[i][j]=@newmap[i][j]
        end
      end
    end
  end

  def _print
    print("\nGame of life cell status")
    for row in 0...@map.size
      print("\n")
      for col in 0...@map[0].size
        if @map[row][col]
          print("#")
        else
          print("-")
        end
      end
    end
  end

  def _neighbors(row,col)
    count = 0
    for r in Range.new(row-1, row+1)
      for c in Range.new(col-1, col+1)
        rc = r < 0 or r >= @map.size
        cc = c < 0 or c >= @map[0].size
        if  rc or cc
          next
        end
        if @map[r][c]
          count += 1
        end
      end
    end
    if @map[row][col] == true
      count -= 1
    end
    return count
  end
end


game = LifeGame.new(10, 25)
print("Game of life Program")
print("Enter x, y where x, y is living cell")
print("0 <= x < 10, 0 <= y < 25")
print("Terminate with x, y = -1, -1")
while(true)
    strs = gets.chomp.split(",")
    row = strs[0].to_i
    col = strs[1].to_i
    if row >= 0 and row < 10 and col >= 0 and row < 25
        game._cell(row, col)
    else row == -1 or col == -1
        break
    end
end

while(true)
    game._print
    game._next
    print("\nContinue next Generation ?")
    if gets.chomp!.upcase== "N"
      break
    end
end



0
0
分享到:
评论

相关推荐

    用Java写的生命游戏 Game of life written by Java.zip

    "生命游戏"(Game of Life)是由英国数学家约翰·康威提出的一种细胞自动机,它以简单的规则模拟复杂的生命现象。在这个项目中,我们看到一个使用Java编程语言实现的版本。下面将详细介绍这个Java实现的"生命游戏...

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

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

    生命游戏 源码 vc Game of life

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

    game of life 测试数据生成

    《生命游戏》(Game of Life)是英国数学家约翰·康威提出的一种细胞自动机,它以简单的规则模拟复杂的生命现象。在这个系统中,每个细胞都有两种状态:活或者死。细胞的状态会在每一代根据其周围邻居的状态进行更新...

    生命游戏(game of life)

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

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

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

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

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

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

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

    game of life 代码简单 风格经典 适合新手

    《生命游戏》(Game of Life)是英国数学家约翰·康威提出的一种细胞自动机,它以简单的规则展示了复杂的行为,是计算机科学和数学领域的经典示例。这个标题表明我们将探讨一个适合新手学习的《生命游戏》代码实现,...

    game_of_life.zip_game of life_game of life java_game_of_life_lif

    《生命游戏》(Game of Life)是由英国数学家约翰·康威在1970年提出的细胞自动机,它是一个简单的模拟系统,展现了复杂行为和动态模式的产生。在这个游戏中,虚拟的细胞在二维网格上根据一些简单的规则进行演化。这...

    康威生命游戏(Game of Life)

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

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

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

    game_of_life1.zip_game of life_生命_生命游戏

    这个程序是在windows平台下运行game of life最好的平台。它不仅对细胞空间没有限制、运行速度非常快、界面很友好,而且能够为你提供大量的初始细胞分布图案,你还可以任意组合这些图案达到你象要的构形,然后让这些...

    生命进化游戏(The Game of Life) C++程序代码

    一种在很多格子里不断进化的生命进化的小游戏。 它的规则是这样的: 对其中一个网格,如果它的邻居少于两个,则它会死于孤独;如果多于三个,它亦会因拥挤而死。只有当它的邻居数等于二或三时它才会生存到下一代;...

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

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

    Game_of_life_rand.rar_game of life_game of life matlab_matlab ga

    生命游戏,又称Conway's Game of Life,是由数学家约翰·何顿·康威在1970年提出的一种简单的细胞自动机模型。这个模型基于一套简单的规则,却能展现出复杂的动态行为,模拟出类似生物演化、群体行为等现象。在...

    C# 控制台 Console Conway's game of life 康威 生命游戏 源码

    康威生命游戏(Conway's game of life) 游戏以细胞为单元,每个细胞有两种状态:存活、死亡。 游戏有下面几条规则: 当细胞存活时,如果周围八格存活细胞时(不包含2个),该细胞死亡。 当细胞存活时,如果周围...

Global site tag (gtag.js) - Google Analytics