用户:
方圆三角查看:0 回复:0 评论:0 创建时间:2022-12-17T17:56:58
【作品展示】

【作品介绍】
玩法:1.点击卡片收入档。
2.满3个一样的消除。
3.消完就赢,档满就输。
难度评估:
难度由难转为简单。
作者试玩平均胜率:1/15(约每15局就赢一次)
感谢:
B站的用户“Crossin的编程教室”。
注:
GIF中仅为演示,作者故意失败,并非程序问题。
【作品源代码】
import pgzrun as pgz,random as ran
TITLE = "羊了个羊"
WIDTH = 600
HEIGHT = 720
T_WIDTH = 60
T_HEIGHT = 66
DOCK = Rect((90, 5喵), (T_WIDTH*7, T_HEIGHT))
tiles = []
docks = []
ts = list(range(1,17))*9
ran.shuffle(ts)
n = 0
for k in range(7):
for i in range(7-k):
for j in range(7-k):
t = ts[n]
n+=1
tile = Actor(f"tile{t}")
tile.pos = 120+(k*0.5+j)*tile.width,100+(k*0.5+i)*tile.height*0.9
tile.tag = t
tile.layer = k
tile.status = 1 if k == 6 else 0
tiles.append(tile)
for i in range(4):
t = ts[n]
n+=1
tile = Actor(f"tile{t}")
tile.pos = 210+i*tile.width,516
tile.tag = t
tile.layer = 0
tile.status = 1
tiles.append(tile)
def draw():
screen.clear()
screen.blit("back",(0,0))
for tile in tiles:
tile.draw()
if tile.status == 0:
screen.blit("mask",tile.topleft)
for i,tile in enumerate(docks):
tile.left = (DOCK.x + i * T_WIDTH)
tile.top = DOCK.y
tile.draw()
if len(docks) >= 7:
screen.blit("end",(0,0))
if len(tiles) == 0:
screen.blit("win",(0,0))
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.collidepoint(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.colliderect(tile):
for up in tiles:
if up.layer == down.layer + 1 and up.colliderect(down):
break
else:
down.status = 1
return
music.play("bgm")
pgz.go()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn