注:图片请自找
from pgzrun import *
# 导入舞台拓展能力
from wonder import Stage
import random
WIDTH = 600
HEIGHT = 330
T_WIDTH = 30
T_HEIGHT = 32
DOCK = Rect((30, 188), (T_WIDTH*7, T_HEIGHT))
back = Actor('back')
win = Actor('win', topleft = (0, 0))
end = Actor('end')
test1=Actor('蛋君表情合集')
test2=Actor('皮皮_不知道')
tiles = []
docks = []
ts = list(range(1, 13))*9
random.shuffle(ts)
n = 0
for k in range(7):
for i in range(4- k):
for j in range(11 - k):
t = ts[n]
n += 1
tile = Actor(f'tile{t}')
tile.pos = 100 + (k * 0.5 + j) * tile.width, 70 + (k * 0.5 + i) * tile.height * 0.9
tile.tag = t
tile.layer = k
tile.status = 1 if k == 3 else 0
tiles.append(tile)
for i in range(8):
t = ts[n]
n += 1
tile = Actor(f'tile{t}')
tile.pos = 160 + i * tile.width, 240
tile.tag = t
tile.layer = 0
tile.status = 1
tiles.append(tile)
def draw():
screen.draw.clear()
back.draw()
for tile in tiles:
tile.draw()
if tile.status == 0:
tile.frame=1
else:
tile.frame=0
for i, tile in enumerate(docks):
tile.x = 180 + i * 40
tile.y = 295
tile.draw()
test1.draw()
test2.draw()
if len(docks) >= 7:
end.draw()
if len(tiles) == 0:
win.draw()
def on_mouse_down(pos):
global docks
if len(docks) >= 7 or len(tiles) == 0:
return
for tile in reversed(tiles):
if tile.status == 1 and tile.collide_point(pos):
tile.status = 2
tiles.remove(tile)
diff = [t for t in docks if t.tag != tile.tag]
if len(docks) - len(diff) < 2:
docks.append(tile)
else:
docks = diff
for down in tiles:
if down.layer == tile.layer - 1 and down.collide_actor(tile):
for up in tiles:
if up.layer == down.layer + 1 and up.collide_actor(down):
break
else:
down.status = 1
return
music.play('bgm')
go()