生命游戏为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
分享到:
相关推荐
使用java开发的游戏项目源码,可用于毕业设计、课程设计、练手学习等
主要介绍了python实现生命游戏的示例代码(Game of Life),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
康威生命游戏(Game of Life)Delphi版本
生命游戏 源码 vc Game of life beautiful and interesting 敲空格开始游戏 knock at space bar to start the game
3D_game of life_3d元胞自动机_三维生命游戏_gameoflife_生命游戏.zip
这个程序是在windows平台下运行game of life最好的平台。它不仅对细胞空间没有限制、运行速度非常快、界面很友好,而且能够为你提供大量的初始细胞分布图案,你还可以任意组合这些图案达到你象要的构形,然后让这些...
NULL 博文链接:https://codeprac.iteye.com/blog/1125136
在C++中实现生命游戏 (Game of Life) ,并 遵循一些限制。 ·生命游戏的规则 一个无限的二维正交方格单元格网格。 每个单元格处于两种可能的状态之一: 存活 或死亡。 每个单元格与其八个邻居进行交互:存活的 单元格...
一种在很多格子里不断进化的生命进化的小游戏。 它的规则是这样的: 对其中一个网格,如果它的邻居少于两个,则它会死于孤独;如果多于三个,它亦会因拥挤而死。只有当它的邻居数等于二或三时它才会生存到下一代;...
3D_game of life_3d元胞自动机_三维生命游戏_gameoflife_生命游戏
康威生命游戏(Conway's game of life) 游戏以细胞为单元,每个细胞有两种状态:存活、死亡。 游戏有下面几条规则: 当细胞存活时,如果周围八格存活细胞时(不包含2个),该细胞死亡。 当细胞存活时,如果周围...
生命游戏的演化代码,用python写的可以控制演化的代数可以控制演化的单元
生命游戏的java源代码。基于元胞自动机的生命游戏,是学习和深入CA方法的很好例子。
3D_game of life_3d元胞自动机_三维生命游戏_gameoflife_生命游戏_源码.rar
game-of-life, 在Javascript和画布中,生命的Conway游戏 生命的Javascript游戏Javascript和画布中的conway游戏。演示在 http://pmav.eu/stuff/javascript-game-of-life- v3.1.1/ 联机。
模拟细胞的生命游戏,通过编写类来模拟细胞的整体,然后输出来描述细胞的存活状态,其中细胞更细换代满足一定的规则
功能强大的细胞自动机 内置数百种规则和演化图景。具体操作可参考百度词条生命游戏
生命游戏的串行实现c语言基础上的实现,有界面