Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/rev/a40cbd127d39
Дата изменения: Unknown
Дата индексирования: Mon Oct 1 23:08:06 2012
Кодировка: Windows-1251
cca: a40cbd127d39

cca

changeset 11:a40cbd127d39

Deleted key from States. Automata: symbols{}, init, next_step. A little modifications for PEP-8
author darkhan<darkhan.rus@gmail.com>
date Sat, 04 Dec 2010 21:22:08 +0300
parents de4aaf1071ec
children d316cee094dc
files Automata.py State.py
diffstat 2 files changed, 54 insertions(+), 16 deletions(-) [+]
line diff
     1.1 --- a/Automata.py	Sat Dec 04 18:36:35 2010 +0300
     1.2 +++ b/Automata.py	Sat Dec 04 21:22:08 2010 +0300
     1.3 @@ -1,12 +1,48 @@
     1.4  class Automata(object):
     1.5 -	#field[][]
     1.6 +	#field[][]  - Хранит символ состояния
     1.7  	#states[]
     1.8 -	#все изменеия состояния клеток поля и изменения в списке состояний предлагаю делать через непосредственное обращение к соответствующим спискам экземпляра класса, который будет храниться в интрефейсе
     1.9 -	def __init__(self,width,height,states):
    1.10 +	#symbols = {}  - символ: номер_в_states
    1.11 +
    1.12 +	def __init__(self, width, height, states):
    1.13 +		self.width = width
    1.14 +		self.height = height
    1.15 +		self.states = states
    1.16 +		self.symbols = {}
    1.17 +		for num, st in enumerate(self.states):
    1.18 +			self.symbols[st.symbol] = num
    1.19 +		self.field = []
    1.20 +		for row in range(height):
    1.21 +			self.field.append([])
    1.22 +			for col in range(width):
    1.23 +				self.field[row].append(states[0].symbol)
    1.24 +
    1.25 +	def next_step():
    1.26 +		new_state = []
    1.27 +		for row in range(self.height):
    1.28 +			new_state.append([])
    1.29 +			for col in range(self.width):
    1.30 +				symbol = field[row][col]
    1.31 +				num = 0
    1.32 +				for vert_long in range(row + self.height - 1, 
    1.33 +										row + self.height + 2):
    1.34 +					for horiz_long in range(col + self.width - 1, 
    1.35 +											col + self.width + 2):
    1.36 +						vert = vert_long % self.height
    1.37 +						horiz = horiz_long % self.width
    1.38 +						if (vert == row) & (horiz = col): continue
    1.39 +						if self.field[vert][horiz] == symbol:
    1.40 +							num += 1
    1.41 +				new_state[row].append(
    1.42 +						self.states[self.symbols[symbol]].next_state(num))
    1.43 +						
    1.44 +		for row in range(self.height):
    1.45 +			for col in range(self.width):
    1.46 +				if new_state[row][col]:
    1.47 +					self.field[row][col] = self.states[(self.symbols[symbol]
    1.48 +													+ 1) % len(states)].symbol
    1.49 +
    1.50 +	def change_size(value, side):
    1.51  		pass
    1.52 -	def nextStep():
    1.53 -		pass
    1.54 -	def changeSize(width,height):
    1.55 -		pass
    1.56 -	def containState(symbol):
    1.57 +
    1.58 +	def contain_state(symbol):
    1.59  		return False
     2.1 --- a/State.py	Sat Dec 04 18:36:35 2010 +0300
     2.2 +++ b/State.py	Sat Dec 04 21:22:08 2010 +0300
     2.3 @@ -1,13 +1,15 @@
     2.4  class State(object):
     2.5 -	def __init__(self,name,symbol,color,nums,key):
     2.6 +
     2.7 +	def __init__(self, name, symbol, color, nums):
     2.8  		#name - имя, symbol - символ, который записывается в файл или хранится в массиве, color - цвет отображения, nums - условия перехода - список цифр от 0 до 9, если такое кол-во окружающих клеток с таким же состоянием - переход, соответствующая кнопка на клаве
     2.9 -		self.name=name
    2.10 -		self.symbol=symbol
    2.11 -		self.color=color
    2.12 -		self.nums=nums
    2.13 -		self.key=key
    2.14 -	def nextState(self,num):
    2.15 +		self.name = name
    2.16 +		self.symbol = symbol
    2.17 +		self.color = color
    2.18 +		self.nums = nums
    2.19 +
    2.20 +	def next_state(self, num):
    2.21  		#num - число окружающих клеток в таком же состоянии
    2.22  		return num in self.nums
    2.23 +
    2.24  	def __repr__(self):
    2.25 -		pass
    2.26 +		return name