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