python 斗地主发牌_tkinter模拟斗地主发牌

在上一篇文章的最后,我们留了一个小作业:花果山美男子:tkinter模拟扑克牌和狼人杀发牌​zhuanlan.zhihu.com小作业2:模拟斗地主发牌,上方是牌库,实现从牌库到三个方向的动态发牌,最后揭示三张底牌(提示:可以用空白图片覆盖,或者删除指定组件)今天我们就来完成一下斗地主发牌的模拟。发牌的动态效果,原理和上一篇文章末尾狼人杀发牌是一样的。唯一的难点是牌库减少和揭示底牌的动画,方法就是...
摘要由CSDN通过智能技术生成

在上一篇文章的最后,我们留了一个小作业:花果山美男子:tkinter模拟扑克牌和狼人杀发牌​zhuanlan.zhihu.com

小作业2:模拟斗地主发牌,上方是牌库,实现从牌库到三个方向的动态发牌,最后揭示三张底牌(提示:可以用空白图片覆盖,或者删除指定组件)

今天我们就来完成一下斗地主发牌的模拟。

发牌的动态效果,原理和上一篇文章末尾狼人杀发牌是一样的。唯一的难点是牌库减少和揭示底牌的动画,方法就是每次更新图片时增加一个参数——tags标签,然后删除对应的图片。

另外还增加了“洗牌”、“发牌”、“亮牌”、“码牌”和“叫牌”的按钮,功能顾名思义,实现的逻辑也并不难。

具体方法请参考完整代码:

from tkinter import *

import random

from PIL import Image, ImageTk

import time

import tkinter.messagebox

n=54

player1,player2,player3,player4=[],[],[],[]

p1,p2,p3,p4=[],[],[],[]

pocker=[i for i in range(n)]

imgs=[]

root=Tk()

root.title('斗地主发牌模拟')

cv=Canvas(root,bg="White",width=800,heigh=650)

count=53 #牌堆剩余牌数(索引值,从0开始,用于tags标签的命名)

img0=ImageTk.PhotoImage(file="imgS/55.gif") #牌背图片

for i in range(1,55):

imgs.insert(i,ImageTk.PhotoImage(file="imgS/"+str(i)+".gif"))

lock=0 #是否叫地主的标记

#洗牌(用随机交换打乱牌序)

def gen_pocker(n):

x=100

while(x>0):

x=x-1

p1=random.randint(0,n-1)

p2=random.randint(0,n-1)

t=pocker[p1]

pocker[p1]=pocker[p2]

pocker[p2]=t

return pocker

#将三个玩家和底牌分配到对应的列表

def mm():

global p1,p2,p3,p4

p1,p2,p3,p4=[],[],[],[]

pocker=gen_pocker(n) #打乱后的牌组编号

for m in range(0,51,3):

try:

p2.append(pocker[m])

p3.append(pocker[m+1])

p4.append(pocker[m+2])

except:

break

for m in range(51

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值