本篇内容主要讲解“python如何实现生命游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何实现生命游戏”吧!
代码如下:
#-*-coding:utf-8-*-
fromtimeimportsleep
fromccopyimportdeepcopy
世界_高=20#世界长度
世界范围=40#世界宽度
活着_CON=3#复活条件
KEEP_CON=2#保有条件
类单元(对象):
'''''细胞对象'''
def__init__(self,pos):
'''''自身坐标x,y,已经是否还存活'''
自我点,自我是活着的=位置,假
self.x,self.y=self.point
defsetAlive(self):
自我是活着的=真
defsetDied(self):
self.is_alive=False
defdisplay(self):
ifself.is_alive:
返回' * '
返回""
defdisplayLinux(self):
'''''在Linux操作系统操作系统环境下可以打印黑白块'''
ifself.is_alive:
return ' \ 033[0;37;47m\033[0m '
return ' \ 033[0;30;40m\033[0m '
类游戏管理器(对象):
def__init__(self):
self.world=self.initWorld()
self.initAliveCell()
定义网络(自我):
world=[]
pos _ xinxrange(WORld _ WIDE):
列=[]
适用于操作系统范围(世界高):
column.append(单元格((pos_x,pos_y)))
world.append(列)
返回世界
definitAliveCell(self):
fromrandomimportchoice
自视甚高。世界3:
forcellinhigh:
ifchoice((0,1))==0:
继续
cell.setAlive()
defget邻居(self,cell_obj):
live_count=0
forx _ ofexrange(-1,2):
fory _ of exrange(-1,2):
c_x,c_y=cell_obj.x x_of,cell _ obj.y y _ of
if((c_x,c_y)==cell_obj.point)或\
(c_x0orc_x=WORLD_WIDE)或\
(c_y0orc_y=WORLD_HIGH):
'''''排除自身和越界的点'''
继续
ifself.world[c_x][c_y].is_alive:
live_count=1
returnalive _ count
defdisplay(self):
打印'=' *万维网#等号分割线
用于dexinxrange(世界_高):
打印""。加入([高[指数]).为highleinself显示Linux()。世界])
打印'=' *万维网
defgameStart(self):
whileTrue:
self.display()
new_world=deepcopy(self.world)
forp_x,wide _ listinenumerate(self。世界):
forp_y,_ in numerate(wide _ list):
current _ cell=new _ world[p _ x][p _ y]
nei _ num=self。获取邻居(当前单元格)
ifnei_num==ALIVE_CON:
current _ cell.setAlive()
elifnei_num!=KEEP_CON:
current_cell.setDied()
self.world=new_world
睡眠(0.2)
if__name__=='__main__':
world=GameManager()
try:
world.gameStart()
键盘中断:除外
'''''防止拷贝退出报错'''
到此,相信大家对“python如何实现生命游戏”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。