snake.Snake
rules = список объектов класса Rule
cells = список объектов класса Cell
color
__init__(cells) – стартовое расположение
load(file) – должна быть ответственна за проверку типа файла, обработку названия змеи и пробелов между правилами и комментариев.
fill () – задает клеткам принадлежность змее и задает тип клетки (голова, хвост, туловище)
- snake.Rule
snake = snake
direction = dx, dy
pattern – собственно, сама картинка с правилом
__init__ ()
load (file) – должна быть ответственна за обработку правила.
applies (field, x, y) – сравнивает участок Поля с правилом
rotate (rot) – поворот правила, домножаем на матрицу поворота
engine.Cell
x, y
canvas
snake – принадлежность змее, None – если нет такой змеи, 'my' - своя, 'enemy' - враг
type = 'empty', 'wall', 'body', 'head', 'tail', 'any' – для головы противника: type = 'head', snake = 'enemy'
__init__ (x, y, canvas)
redraw (w,h) – перерисовывает клетку соответственно текущему значению, w, h - высчитываются из размера окна
__eq__ (pattern) – сравнение клетки
clear() – очистка клетки
engine.Engine
field {x,y : cell}
snakes = snake_list
__init__ (canvas, w, h, snake_amount)
init_field() - создает поле, вынесено отдельно от __init__ т.к. достаточно громоздко.
step() – циклы: змеи - move_snake, refill, redraw
move_snake() – паттерны - направления p.s. половину направлений надо заренее выкинуть!!
create_snake (snake_number) – получает номер змеи, и определяет стартовое положение, создает змею, записывает в список и возвращает ее.
refill () – очистка поля, и перезаполнение
redraw (w,h) – перерисовывает поле
legal_moves (snake) – возвращает список legal_dir
main.UI
id – по которому мы будем прерывать run и переходить к step
engine – с него будет все получать и все подавать
__init__ () – рисует интерфейс
load(snake_no, file)
load_1(...)
load_2(...)
load_3(...)
load_4(...)
run()
step()
---------------------------------------------------------------------[_][ ][X]- |+---------------------------------------------------------------------------+| || Игровое поле * || || * || || * || || * || || * || || || ||******************** ********************|| || || || * || || * || || * || || * || || * || |+---------------------------------------------------------------------------+| |+----------------------------++---------------------------++----------------+| || Load snake 1 || Load snake 2 || Run || |+----------------------------++---------------------------++----------------+| |+----------------------------++---------------------------++----------------+| || Load snake 3 || Load snake 4 || Step || |+----------------------------++---------------------------++----------------+| -------------------------------------------------------------------------------