Polyomino class
This commit is contained in:
parent
a8359a98bf
commit
221aa0a713
58
polyomino.py
58
polyomino.py
@ -5,21 +5,17 @@ from kivy.graphics import Color,Line,Rectangle
|
||||
from point import Point,l_infinity
|
||||
from tools import isint_nonzero,sgn,in_interval
|
||||
|
||||
class Square():
|
||||
# size
|
||||
size=50
|
||||
# parent class of all polyominos
|
||||
class Polyomino():
|
||||
def __init__(self,**kwargs):
|
||||
# square elements that maje up the polyomino
|
||||
self.squares=kwargs.get("squares",[])
|
||||
|
||||
def __init__(self,x,y,**kwargs):
|
||||
self.pos=Point(x,y)
|
||||
self.color=kwargs.get("color",(0,0,1))
|
||||
self.selected=False
|
||||
|
||||
# set position
|
||||
def setpos(self,x,y):
|
||||
self.pos.x=x
|
||||
self.pos.y=y
|
||||
|
||||
def draw(self,**kwargs):
|
||||
# draw function
|
||||
def draw(self):
|
||||
# set color
|
||||
if not self.selected:
|
||||
Color(*self.color)
|
||||
@ -28,7 +24,45 @@ class Square():
|
||||
# darken selected
|
||||
Color(r/2,g/2,b/2)
|
||||
|
||||
Rectangle(pos=((self.pos.x-0.5)*self.size,(self.pos.y-0.5)*self.size),size=(self.size,self.size))
|
||||
for square in self.squares:
|
||||
Rectangle(pos=((square.pos.x-0.5)*square.size,(square.pos.y-0.5)*square.size),size=(square.size,square.size))
|
||||
|
||||
# draw boundary
|
||||
self.stroke()
|
||||
|
||||
# draw boundary (override for connected polyominos)
|
||||
def stroke(self):
|
||||
# white
|
||||
Color(1,1,1)
|
||||
for square in self.squares:
|
||||
Line(points=(
|
||||
*((square.pos.x-0.5)*square.size,(square.pos.y-0.5)*square.size),
|
||||
*((square.pos.x-0.5)*square.size,(square.pos.y+0.5)*square.size),
|
||||
*((square.pos.x+0.5)*square.size,(square.pos.y+0.5)*square.size),
|
||||
*((square.pos.x+0.5)*square.size,(square.pos.y-0.5)*square.size)
|
||||
))
|
||||
|
||||
|
||||
# square
|
||||
class Square(Polyomino):
|
||||
def __init__(self,x,y,**kwargs):
|
||||
super(Square,self).__init__(squares=[Square_element(x,y)],kwargs)
|
||||
|
||||
|
||||
|
||||
# square building block of polyominos
|
||||
class Square_element():
|
||||
# size
|
||||
size=50
|
||||
|
||||
def __init__(self,x,y,**kwargs):
|
||||
self.pos=Point(x,y)
|
||||
|
||||
# set position
|
||||
def setpos(self,x,y):
|
||||
self.pos.x=x
|
||||
self.pos.y=y
|
||||
|
||||
|
||||
# check whether a square at pos interacts with square
|
||||
def check_interaction(self,pos):
|
||||
|
Loading…
Reference in New Issue
Block a user