python实现扑克牌交互式界面发牌程序


Posted in Python onApril 22, 2020

本文实例为大家分享了python实现扑克牌交互式界面发牌程序的具体代码,供大家参考,具体内容如下

注:图片自行在网上下载、替换即可

#coding=utf-8

class Card(): #扑克牌类
  points=['1','2','3','4','5','6','7','8','9','10','11','12','13']
  suits=['1','2','3','4'] #花色
  def __init__(self,points,suits):
    self.points=points
    self.suits=suits
  def __str__(self):
    rep=self.suits+'-'+self.points
    return rep
class Hand():
  def __init__(self):
    self.cards=[]
  def add(self,card):
    self.cards.append(card)
  def __str__(self):
    rep=''
    for card in self.cards:
      rep+=str(card)+'\t'
    return rep

class Poke(Hand):
  def generate_poke(self):
    for point in Card.points:
      for suit in Card.suits:
        self.add(Card(point,suit))
  def random_poke(self):
    import random
    random.shuffle(self.cards)
  def deal(self,hands,limit_hand=13):
    for rounds in range (limit_hand):
      for hand in hands:
        if self.cards:
          top=self.cards[0]
          self.cards.remove(top)
          hand.add(top)

def print_poke(players):
  results=[player.__str__() for player in players]
  pk=[]
  for result in results:
    pk1=result.rstrip()
    pk2=pk1.split('\t')
    pk.append(pk2)
  image_name=[]
  for i in range(len(pk)):
    for j in pk[i]:
      str_name='D:\pukepai\images\\{}.gif'.format(j)
      image_name.append(str_name)
  wj=[image_name[i:i+13] for i in range(len(image_name)) if i%13==0]
  return wj

def restart():
  tk.messagebox.showinfo("hello python","sdfg")

players=[Hand(),Hand(),Hand(),Hand()]
pockers=Poke()
pockers.generate_poke()
pockers.random_poke()
pockers.deal(players,13)
wj=print_poke(players) 

import tkinter as tk
win=tk.Tk()
win.title("扑克牌程序")
win.geometry('800x600')
cv=tk.Canvas(win,bg='red',width=800,height=600)
from PIL import Image,ImageTk
imgs=[]
(p1,p2,p3,p4)=([],[],[],[])
for i in range(4):
  for j in range(13):
    img=Image.open(wj[i][j])
    imgs.insert(i*13+j,ImageTk.PhotoImage(img))
p1=imgs[0:13]  
p2=imgs[13:26]
p3=imgs[26:39]
p4=imgs[39:52]
for x in range(0,13):
  cv.create_image((200+20*x,80),image=p1[x])
  cv.create_image((100,150+20*x),image=p2[x])
  cv.create_image((200+20*x,500),image=p3[x])
  cv.create_image((560,150+20*x),image=p4[x])

#添加重新发牌按钮
from tkinter.messagebox import *
bt1=tk.Button(win,text='重新发牌',width=60,height=40,command=restart)
bt1.place(x=290,y=380,width=60,height=40)

cv.pack()
win.mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
django+tornado实现实时查看远程日志的方法
Aug 12 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 #Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 #Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 #Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 #Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 #Python
jupyter lab文件导出/下载方式
Apr 22 #Python
python模拟实现分发扑克牌
Apr 22 #Python
You might like
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
VUE 动态组件的应用案例分析
2019/12/02 Javascript
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
python3 爬取图片的实例代码
2018/11/06 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
在购买印度民族服饰:Soch
2020/09/15 全球购物
车间班组长岗位职责
2013/11/13 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
社区党务公开实施方案
2014/03/18 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
四年级评语大全
2014/04/21 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
2014年绿化工作总结
2014/12/09 职场文书
导师鉴定意见
2015/06/05 职场文书
导游词之天津盘山
2019/11/01 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技