没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
python实现生命游戏的示例代码实现生命游戏的示例代码(Game of Life)
主要介绍了python实现生命游戏的示例代码(Game of Life),小编觉得挺不错的,现在分享给大家,也给大家做个
参考。一起跟随小编过来看看吧
生命游戏的算法就不多解释了,百度一下介绍随处可见。
因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以
闲暇之余写一个不用外部依赖库,console输出的版本。
# -*- coding: utf-8 -*-
from time import sleep
from copy import deepcopy
WORLD_HIGH = 20 #世界长度
WORLD_WIDE = 40 #世界宽度
ALIVE_CON = 3 #复活条件
KEEP_CON = 2 #保有条件
class Cell(object):
'''''细胞对象'''
def __init__(self, pos):
'''''自身坐标x,y, 已经是否还存活'''
self.point, self.is_alive = pos, False
self.x, self.y = self.point
def setAlive(self):
self.is_alive = True
def setDied(self):
self.is_alive = False
def display(self):
if self.is_alive:
return '*'
return ' '
def displayLinux(self):
'''''在linux环境下可以打印黑白块'''
if self.is_alive:
return ' 33[0;37;47m [0m'
return '3[0;30;40m 33[0m'
class GameManager(object):
def __init__(self):
self.world = self.initWorld()
self.initAliveCell()
def initWorld(self):
world = []
for pos_x in xrange(WORLD_WIDE):
column = []
for pos_y in xrange(WORLD_HIGH):
column.append(Cell((pos_x, pos_y)))
world.append(column)
return world
def initAliveCell(self):
from random import choice
for high in self.world:
for cell in high:
if choice((0, 1)) == 0:
continue
cell.setAlive()
def getNeighbours(self, cell_obj):
alive_count = 0
for x_of in xrange(-1, 2):
for y_of in xrange(-1, 2):
c_x, c_y = cell_obj.x + x_of, cell_obj.y + y_of
if ((c_x, c_y) == cell_obj.point) or \
(c_x < 0 or c_x >= WORLD_WIDE) or \
(c_y < 0 or c_y >= WORLD_HIGH):
'''''排除自身和越界的点'''
continue
if self.world[c_x][c_y].is_alive:
alive_count += 1
return alive_count
资源评论
weixin_38590790
- 粉丝: 4
- 资源: 940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功