﻿

# # Tk_sq_combos.py

Dec 5th, 2020
916
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. # Tk_sq_combos.py -- just an experiment
2.
3. from Tkinter import *
4.
5. # Number of squares in x and y dimensions.
6. nx = 80
7. ny = 80
8.
9. # Size of square side in pixels.
10. ss = 5
11.
12. # Total dimensions of display.
13. ww = nx * ss
14. hh = ny * ss
15.
16. root = Tk()
17. root.geometry("%sx%s+0+0" % (ww, hh))
18. c = Canvas(root, width=ww, height=hh)
19. c.pack()
20.
21. COLORS = 'blue purple black gray white '.split()
22. val = 'qwertyuiopasdfghjklzxcvbnm1234567890'
23.
24. from itertools import combinations
25.
26. combos = [p for p in combinations(COLORS*3, 7)]
27.
28. def make_square(x, y, color):
29.     return c.create_rectangle(x * ss, y * ss, (x+1) * ss, (y+1) * ss,
30.                               fill=color, outline=color)
31.
32. def make_squares():
33.     squares = []
34.     for x in range(nx):
35.         squares.append([])
36.         for y in range(ny):
37.             squares[x].append(make_square(x, y, 'white'))
38.     return squares
39.
40. squares = make_squares()
41.
42. done = False
43. def quit_handler(event):
44.     global done
45.     done = True
46.
47. # Left mouse button click on canvas terminates the program.
48. root.bind('<Button-1>', quit_handler)
49.
50. ppp = []
51. while not done:
52.     sss = ''
53.     for x in range(len(squares)):
54.         for y in range(len(squares[x])):
55.             h = squares[x][y]
56.             t = -11
57.             while 1:
58.                 if not ppp:
59.                     ppp = list(combos.pop(0))+COLORS
60.                     combos.append(ppp[:])
61.                     t -= 1
62.                 p = ppp.pop()
63.                 s = val[COLORS.index(p)]
64.                 if sss[t:]+s not in sss:
65.                     break
66.             sss += s
67.             sss = sss[-ww*hh:]
68.             color = p
69.             c.itemconfig(h, fill=color, outline=color)
70.     combos = combos + [combos.pop(9),combos.pop(7),combos.pop(3),combos.pop(0)]
71.     root.update()
72.
RAW Paste Data