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正则分组的应用
Nov 10 Python
python pdb调试方法分享
Jan 21 Python
python中反射用法实例
Mar 27 Python
在Python中使用元类的教程
Apr 28 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 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 sprintf()函数用例解析
2011/05/18 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php数据访问之增删改查操作
2016/05/09 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python pillow模块使用方法详解
2019/08/30 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
学生会干部自荐信
2014/02/04 职场文书
红旗方阵解说词
2014/02/12 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
学校交通安全责任书
2014/08/25 职场文书
碧霞祠导游词
2015/02/09 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
JS实现简单九宫格抽奖
2022/06/28 Javascript