您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python如何實現(xiàn)生命游戲”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python如何實現(xiàn)生命游戲”吧!
代碼如下:
#-*-coding:utf-8-*-
fromtimeimportsleep
fromccopyimportdeepcopy
世界_高=20#世界長度
世界范圍=40#世界寬度
活著_CON=3#復活條件
KEEP_CON=2#保有條件
類單元(對象):
'''''細胞對象'''
def__init__(self,pos):
'''''自身坐標x,y,已經(jīng)是否還存活'''
自我點,自我是活著的=位置,假
self.x,self.y=self.point
defsetAlive(self):
自我是活著的=真
defsetDied(self):
self.is_alive=False
defdisplay(self):
ifself.is_alive:
返回' * '
返回""
defdisplayLinux(self):
'''''在Linux操作系統(tǒng)操作系統(tǒng)環(huán)境下可以打印黑白塊'''
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()
定義網(wǎng)絡(luò)(自我):
world=[]
pos _ xinxrange(WORld _ WIDE):
列=[]
適用于操作系統(tǒng)范圍(世界高):
column.append(單元格((pos_x,pos_y)))
world.append(列)
返回世界
definitAliveCell(self):
fromrandomimportchoice
自視甚高。世界3:
forcellinhigh:
ifchoice((0,1))==0:
繼續(xù)
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):
'''''排除自身和越界的點'''
繼續(xù)
ifself.world[c_x][c_y].is_alive:
live_count=1
returnalive _ count
defdisplay(self):
打印'=' *萬維網(wǎng)#等號分割線
用于dexinxrange(世界_高):
打印""。加入([高[指數(shù)]).為highleinself顯示Linux()。世界])
打印'=' *萬維網(wǎng)
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如何實現(xiàn)生命游戲”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。