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抓取豆瓣图片并自动保存示例学习
Jan 10 Python
python实现字符串和日期相互转换的方法
May 13 Python
Python中存取文件的4种不同操作
Jul 02 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
Pycharm github配置实现过程图解
Oct 13 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
pandas 按日期范围筛选数据的实现
Feb 20 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
vue实现选中效果
2020/10/07 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
预备党员政审材料
2014/02/04 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
匿名检举信范文
2015/03/02 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
银行催款通知书
2015/04/17 职场文书
公司2015年终工作总结
2015/05/26 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
2019入党申请书格式
2019/06/25 职场文书