-
Notifications
You must be signed in to change notification settings - Fork 0
/
canvas.py
61 lines (56 loc) · 1.76 KB
/
canvas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from constants import *
from random import randrange
def get_coords_for_shape(s,x,y):
w = cell_width
h = cell_height
shapes = {
'gt' : [ x, y, x+w, y+h/2, x, y+h ],
'gtth' : [ x, y, x+w, y+h/2, x, y+h/2 ],
'gtbh' : [ x, y, x+w, y, x, y+h/2 ],
'lt' : [ x, y, x+w, y-h/2, x+w, y+h/2 ],
'ltth' : [ x, y, x+w, y-h/2, x+w, y ],
'ltbh' : [ x, y, x+w, y, x+w, y+h/2 ]
}
return shapes[s]
def get_shape_at_index(idx):
row = idx // cells_per_row
col = idx % cells_per_row
if row % 2 == col % 2:
if row == 0:
return 'gtbh'
elif row == cells_per_column - 1:
return 'gtth'
else:
return 'gt'
else:
if row == 0:
return 'ltbh'
elif row == cells_per_column - 1:
return 'ltth'
else:
return 'lt'
def random_color():
return '#%06x' % randrange(0,0xffffff)
def make_polygon_coords_array():
result = []
y = 0
for i in range(cells_per_column):
x = 0
for j in range(cells_per_row):
s = get_shape_at_index(i * cells_per_row + j)
coords = get_coords_for_shape(s,x,y)
result.append(coords)
x,y = coords[2], coords[3]
if i % 2 == 0:
if i == 0:
y = cell_height / 2
else:
y += cell_height
return result
def draw_polygons(canvas):
result = []
coords = make_polygon_coords_array()
for c in coords:
polygon_id = canvas.create_polygon(c, fill=random_color(), dash=cell_dash, outline=cell_outline)
result.append(polygon_id)
return result