python tkinter出牌洗牌
python tkinter 出牌洗牌
利用Tkinter模块设计出扑克牌发牌窗体程序,要求4名牌手打牌,计算机随机将52张牌(不含大小王)发给4名牌手,在屏幕上显示每位牌手的牌。程序运行结果如图所示。
- 本程序只是实现一个界面和出牌洗牌的功能,不是斗地主游戏!!!
- 有两个问题没有解决:洗牌的动画效果不好
- 每次出牌后不能把新打出的牌放到最顶层
源代码:
from functools import partial
from tkinter import *
import random
import time
from PIL import Image,ImageTk
tk=Tk()
tk.title("洗牌,出牌")
tk.geometry("800x600+250+30")
tk.resizable(0,0)
bu=Button()
buttons=[bu]*52#记录所有选中的按钮
delbuttons=[]#记录所有按钮
sign=[]
imgs=[]
for i in range(1,5):for j in range(1,14):imgs.insert((i-1)*13+(j-1),PhotoImage(file='images\\'+str(i)+'-'+str(j)+'.gif'))#为窗口添加背景图片
can=Canvas(tk,width=800,height=600)
im=Image.open('images\\bg.gif')
img=ImageTk.PhotoImage(im.resize((800,600)))
can.create_image(400,300,image=img)
can.pack()#洗牌后删除所有牌函数
def delbutton():for i in range(0,52):buttons[i]=bubuttons[i].place_forget()for i in range(0,len(delbuttons)):delbuttons[i].place_forget()tk.after(500,washcard1)#洗牌
def washcard1():#打乱图片列表的顺序random.shuffle(imgs)#创建第一行a=230#b=[0]*13for i in range(0,13):l1=Button(tk,image=imgs[i],compound=CENTER)command = partial(downclik, l1,a,i)#command=upclik(l1,a)结果为:打印了13个hellol1.config(command=command)l1.place(x=a,y=60)a+=20delbuttons.append(l1)#创建第二列a=100for i in range(13,26):l1=Button(tk,image=imgs[i],compound=CENTER)command = partial(leftclik, l1,a,i)l1.config(command=command)l1.place(x=630,y=a)a+=20delbuttons.append(l1)#创建第二行a=230for i in range(26,39):l1=Button(tk,image=imgs[i],compound=CENTER)command = partial(upclik, l1,a,i)l1.config(command=command)l1.place(x=a,y=400)a+=20delbuttons.append(l1)#创建第一列a=100for i in range(39,52):l1=Button(tk,image=imgs[i],compound=CENTER)command = partial(rightclik, l1,a,i)l1.config(command=command)l1.place(x=70,y=a)a+=20delbuttons.append(l1)#出牌点击下移事件
def downclik(button,a,i):if buttons[i]==bu:#若是第一次点击选中button.place(x=a,y=80)#b[i]=1buttons[i]=buttonelse:#第二次点击取消选中button.place(x=a,y=60)#b[i]=0buttons[i]=bu
#出牌点击左移事件
def leftclik(button,a,i):if buttons[i]==bu:#若是第一次点击选中button.place(x=600,y=a)#b[i]=1buttons[i]=buttonelse:#第二次点击取消选中button.place(x=630,y=a)#b[i]=0buttons[i]=bu
#出牌点击上移事件
def upclik(button,a,i):if buttons[i]==bu:#若是第一次点击选中button.place(x=a,y=380)#b[i]=1buttons[i]=buttonelse:#第二次点击取消选中button.place(x=a,y=400)#b[i]=0buttons[i]=bu
#出牌点击右移事件
def rightclik(button,a,i):if buttons[i]==bu:#若是第一次点击选中button.place(x=100,y=a)#b[i]=1buttons[i]=buttonelse:#第二次点击取消选中button.place(x=70,y=a)#b[i]=0buttons[i]=bu
#出牌事件
def upcard():'''for j in range(0,len(sign)):#delbuttons[sign[j]].place_forget()buttons[sign[j]].place_forget()sign.pop()print("hello")'''a=300for i in range(0,52):if buttons[i]!=bu:buttons[i].place(x=a,y=225)#sign.append(i)a+=10
#洗牌事件
def washcard():tk.after(100,delbutton)
#出牌功能按钮
def playcard():button=Button(tk,text='出牌',bd=5,bg='red',command=upcard,width=10,height=2)button.place(x=480,y=270)#洗牌功能按钮
def washbutton():#washcard()不能加()button=Button(tk,text='洗牌',bd=5,bg='red',command=washcard,width=10,height=2)button.place(x=200,y=270)
washbutton()
washcard()
playcard()
tk.mainloop()
python tkinter出牌洗牌相关推荐
- python斗地主游戏源码_python实现斗地主分牌洗牌
本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...
- python联网斗地主_python实现斗地主分牌洗牌
本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...
- 斗地主分牌洗牌(python)
斗地主分牌洗牌(python) 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列. 3.编写一段代码完成 ...
- Python学习笔记之洗牌顺牌
一.系列缘由 作为一名运维工程师,也一直有一个学习开发的想法,值此之际,不知道博客的下一期目标在哪里,在这思考和犹豫的间隙想着学习和充实一下自己,学习一下python语言,python随着大数据和 ...
- 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)
1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtuple card = namedtuple('card',['ran ...
- python打乱顺序的洗牌函数
numpy.random.shuffle(x) x:序列或者数组 对于多维数组,只对第一维进行洗牌,子数组的顺序改变了,但是它们的内容保持不变. >>> arr = np.arang ...
- php 108张牌洗牌,完美洗牌原理大揭秘 手把手图文教程!呕心沥血的超级干货...
原标题:完美洗牌原理大揭秘 & 手把手图文教程!呕心沥血的超级干货 先感慨一下,昨晚写到半夜,今天又修改了很多遍,我终于把这篇文章写完了. 然后自夸一下,我敢保证,你从来没有看过像这样的完美洗 ...
- Java 存牌洗牌发牌看牌
package www.test1.com;import java.util.*;/*** 思路:* 存牌(HashMap)* 存下标(ArrayList)* 洗牌(洗下标)* 发牌 (TreeSet ...
- C语言 模拟扑克牌新牌洗牌与发牌
题目: 都已经这样了,斗地主还会远吗 计导课群里大佬发了PPT,就忍不住点开看,看了就觉得很有道理,但是我们不能抄作业,于是我就尝试不用二维数组 改了一次,指针也不用了 很多东西还是不懂,比如写随机数 ...
最新文章
- JS中的offsetWidth, clientWidth, scrollWidth, innerWidth, outerWidth, pageXOffset
- (最新合集)计算机网络谢希仁第七版 第三章课后答案
- 信息系统 项目十大管理和五大过程
- 深度分析 Java 的 ClassLoader 机制(源码级别)(转)
- VS2013 使用QCustomPlot等三方库如何配置
- 前端学习(2215):认识react(2)
- 运行后闪退_好消息好消息,王者荣耀闪退问题苹果也修复啦
- CPU飙高 解决方法
- 【CIKM2020】如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
- 【网络基础编程】第三节 C/S
- 激光雕刻机——广告制作新利器
- Android Studio一键汉化,分享一个自己写的小工具
- 谷歌浏览器常用的搜索语法
- 大田第一次和「 IDO 老徐 」连麦:诊断个人 IP
- 提升技术领导力实操指南
- 3DMAX在三维GIS建模中的应用与优化
- (十八)自动装配-@Autowired-构造器,参数,方法,属性
- iOS 动态字体设置
- Labview学习之俄罗斯方块
- 微信小程序(一)基础知识