没有合适的资源?快使用搜索试试~ 我知道了~
首页python实现生命游戏的示例代码(Game of Life)
资源详情
资源评论
资源推荐

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
- 资源: 941
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0