您好,登錄后才能下訂單哦!
本篇內容主要講解“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。