stupidpythonprojects/laby2/Kachel.py

78 lines
1.8 KiB
Python

from PIL import Image
from PIL import ImageDraw
NORTH = 0
EAST = 1
SOUTH = 2
WEST = 3
class Kachel:
def __init__(self, pos, size):
self.dirs = [False, False, False, False]
self.visited = False
self.pos = pos
self.size = size
self.walkable = False
def isVisited(self):
return self.visited
def getPos(self):
return self.pos
def open(self, direction):
self.dirs[direction] = True
def isOpen(self, direction):
return self.dirs[direction]
def touch(self):
self.visited = True
def makeWalkable(self):
self.walkable = True
def isWalkable(self):
return self.walkable
def getNumberOfOpenWays(self):
n = 0
for i in self.dirs:
if i:
n += 1
return n
def getArrayOfClosedWays(self):
result = []
for i in range(4):
if not self.dirs[i]:
result.append(i)
return result
def draw(self, target, offset):
pos = [(self.pos[0] * self. size[0] + offset[0],
self.pos[1] * self.size[1] + offset[1]),
((self.pos[0] + 1) * self.size[0] + offset[0],
self.pos[1] * self.size[1] + offset[1]),
((self.pos[0] + 1) * self.size[0] + offset[0],
(self.pos[1] + 1) * self.size[1] + offset[1]),
(self.pos[0] * self.size[0] + offset[0],
(self.pos[1] + 1) * self.size[1] + offset[1])]
if (not self.dirs[NORTH]):
target.line((pos[0], pos[1]), (0, 0, 0))
if (not self.dirs[EAST]):
target.line((pos[1], pos[2]), (0, 0, 0))
if (not self.dirs[SOUTH]):
target.line((pos[2], pos[3]), (0, 0, 0))
if (not self.dirs[WEST]):
target.line((pos[3], pos[0]), (0, 0, 0))