. : http://kodomo.fbb.msu.ru/trac/cca/changeset/20%3Aeef739e055f4
: Unknown
: Sun Apr 10 09:18:28 2016
: IBM-866
Changeset 20:eef739e055f4 Cyclyc Cell Automata

Changeset 20:eef739e055f4


Ignore:
Timestamp:
12/04/10 23:28:47 (5 years ago)
Author:
darkhan
Branch:
default
Message:

Completed Automata: change_size, import from State, default states

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Automata.py

    r17 r20
    1from State import *
    2
    13class Automata(object):
    24        #field[][]  - Ն膒 膃
    46        #symbols = {}  - : 冐__states
    57
    6        def __init__(self, width, height, states):
    8        def __init__(self, width, height, states=None):
    79                self.width = width
    810                self.height = height
    9                self.states = states
    11                if states == None:
    12                        self.states = [State("Dead", ' ', white, [5]),
    13                                                        State("Alive", '+', black, [1] + range(4, 9))]
    14                else:
    15                        self.states = states
    1016                self.symbols = {}
    1117                for num, st in enumerate(self.states):
    4551                "0-up, 1-right, 2-down, 3-left"
    4652                new_field = []
    53               
    4754                if side == 0:
    4855                        self.height += value
    5158                                for col in range(self.width):
    5259                                        new_field[row].append(states[0].symbol)
    53                        for row in range(value, self.height):
    54                                if row < 0: continue
    60                        init = value
    61                        if value < 0:
    62                                init = 0
    63                        for row in range(init, self.height):
    5564                                new_field.append([])
    5665                                for col in range(self.width):
    5766                                        new_field[row].append(self.field[row - value][col])
    67                                       
    5868                if side == 2:
    5969                        self.height += value
    60                        for row in range(0, self.height):
    61                                if row > self.height + value - 1: continue
    70                        term = -value
    71                        if value > 0:
    72                                term = 0
    73                        for row in range(self.height - term):
    6274                                new_field.append([])
    6375                                for col in range(self.width):
    6779                                for col in range(self.width):
    6880                                        new_field[row].append(states[0].symbol)
    81                                       
    82                if side == 1:
    83                        self.width += value
    84                        term = -value
    85                        if value > 0:
    86                                term = 0
    87                        for row in range(self.height):
    88                                new_field.append([])
    89                                for col in range(self.width - term):
    90                                        new_field[row].append(self.field[row][col])
    91                        for row in range(self.height):
    92                                for col in range(self.width, self.width + value):
    93                                        new_field[row].append(states[0].symbol)
    94                                       
    95                if side == 3:
    96                        self.width += value
    97                        for row in range(self.height):
    98                                new_field.append([])
    99                                for col in range(value):
    100                                        new_field[row].append(states[0].symbol)
    101                        init = value
    102                        if value < 0:
    103                                init = 0
    104                        for row in range(self.height):
    105                                for col in range(init, self.width):
    106                                        new_field[row].append(self.field[row][col - value])
    107                self.field = new_field
Note: See TracChangeset for help on using the changeset viewer.