标题: [原创代码] 加入矩阵读取功能的Python细胞自动机 经测无误 [打印本页]
作者: 普大喜奔 时间: 2014-9-28 11:16 标题: 加入矩阵读取功能的Python细胞自动机 经测无误
代码:- import random
- import os
- import time
- dict={' ':0,'*':1}
- cells=[[' ' for x in range(50)] for y in range(50)]
- grid=[[' ' for x in range(50)] for y in range(50)]
- while True:
- choice=input('1 = read grid,2 = random generate:')
- if choice=='1' or choice=='2':break
- if choice=='1':
- while True:
- f=input('file name ( max range:48*48 "." = dead "*" = live ):')
- try:
- txt=open(f,'r')
- break
- except:print('file not found')
- y=0
- for line in txt.readlines():
- if y==48:
- print('err:too much lines')
- break
- x=0
- while True:
- if x==48:
- print('err:too much cols')
- break
- try:
- if line[x]=='*':cells[y+1][x+1]='*'
- x+=1
- except:
- y+=1
- break
-
- if choice=='2':
- while True:
- level=input('larger number,less cells ( >0 ):')
- try:
- if int(level)>0:
- for y in range(1,49):
- for x in range(1,49):
- r=random.randint(0,int(level))
- if r==0:cells[y][x]='*'
- break
- except:pass
-
- for y in cells:print(' '.join(y))
- print("press key to begin...")
- os.system('pause >nul')
- i=0
- while True:
- for y in range(1,49):
- for x in range(1,49):
- num=dict[cells[y-1][x-1]]+\
- dict[cells[y-1][x+1]]+\
- dict[cells[y-1][x]]+\
- dict[cells[y+1][x-1]]+\
- dict[cells[y+1][x+1]]+\
- dict[cells[y+1][x]]+\
- dict[cells[y][x-1]]+\
- dict[cells[y][x+1]]
- if num==3:grid[y][x]='*'
- elif num==2:grid[y][x]=cells[y][x]
- else:grid[y][x]=' '
- for y in range(1,49):
- for x in range(1,49):
- cells[y][x]=grid[y][x]
- time.sleep(0.01)
- os.system('cls')
- i+=1
- print('time: '+str(i))
- num=0
- for y in range(1,49):
- for x in range(1,49):
- num+=dict[cells[y][x]]
- if num==0:
- print('cells all dead,press key to exit...')
- break
- else:
- for y in cells:print(' '.join(y))
- os.system('pause >nul')
复制代码
要正常显示的话,需要设置cmd,这是改自3d球的- @echo off & setlocal enabledelayedexpansion & color 0a & title PYTHON CELL
-
- if "%1"=="" (
-
- for %%a in (FontSize:000c0006 WindowSize:003c0064 ScreenColors:0000000f CodePage:000003a8 ScreenBufferSize:003d0064) do for /f "tokens=1,2 delims=:" %%b in ("%%a") do (
-
- >nul reg add HKCU\Console\PYTHON_CELL /v %%b /t reg_dword /d 0x%%c /f)
-
- start "PYTHON_CELL" /max "%ComSpec%" /c "%~s0" 1&goto:eof
-
- ) else (
-
- >nul reg delete HKCU\Console\PYTHON_CELL /f
-
- )
- python cell.py
复制代码
本来早早就写好了,一直被 line[x]:index out of range困扰,估计读入的行最后并不是'\n',没办法用了异常处理终于成功
有兴趣的可以试试随机生成功能,观察下初始状态不同导致的结果差异,数字输的太大的话第2次就会死光光哦~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |