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对两个有序列表进行合并和排序的例子
Jun 13 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
如何在mac版pycharm选择python版本
Jul 21 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php中目录,文件操作详谈
2007/03/19 PHP
PHP新手入门学习方法
2011/05/08 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
babel基本使用详解
2017/02/17 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
观看《永远的雷锋》心得体会
2014/03/12 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
卖车协议书范例
2014/09/16 职场文书
同学聚会通知书
2015/04/20 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python