-
Notifications
You must be signed in to change notification settings - Fork 0
/
puzzle.py
75 lines (60 loc) · 1.52 KB
/
puzzle.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
62
63
64
65
66
67
68
69
70
71
72
73
import random
SIZE = 360
WIDTH = SIZE * 3
HEIGHT = SIZE *3
Lastpic = Actor("9")
Lastpic.left = 2 * SIZE
Lastpic.top = 2 * SIZE
Flag = False
pics = []
for i in range(1,9):
pic = Actor(str(i))
pic.index = i - 1
pics.append(pic)
random.shuffle(pics)
for i in range(8):
pics[i].left = i % 3 * SIZE
pics[i].top = i // 3 * SIZE
def get_pic(grid_x,grid_y):
for pic in pics:
if pic.x // SIZE == grid_x and pic.y // SIZE == grid_y:
return pic
return None
def on_mouse_down(pos):
if Flag:
return
grid_x = pos[0] // SIZE
grid_y = pos[1] // SIZE
thispic = get_pic(grid_x,grid_y)
if (thispic == None):
return
if grid_y > 0 and get_pic(grid_x,grid_y - 1) == None:
thispic.y -= SIZE
return
if grid_y < 2 and get_pic(grid_x,grid_y + 1) == None:
thispic.y += SIZE
return
if grid_x > 0 and get_pic(grid_x - 1,grid_y) == None:
thispic.x -= SIZE
return
if grid_x < 2 and get_pic(grid_x + 1,grid_y) == None:
thispic.x += SIZE
return
def update():
global Flag
if Flag:
return
for i in range(8):
pic = get_pic(i % 3,i // 3)
if (pic == None or pic.index != i):
return
Flag = True
sounds.win.play()
def draw():
screen.fill((255,255,255))
for pic in pics:
pic.draw()
if Flag:
Lastpic.draw()
screen.draw.text("Congratulation!", center=(WIDTH // 2, HEIGHT // 2),
fontsize=100, color="red")