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实现的ini文件操作类分享
Nov 20 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
python的内存管理和垃圾回收机制详解
May 18 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
python+openCV对视频进行截取的实现
Nov 27 Python
python 模拟在天空中放风筝的示例代码
Apr 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
php设计模式之委托模式
2016/02/13 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
类似框架的js代码
2006/11/09 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
Python返回真假值(True or False)小技巧
2015/04/10 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python事件驱动event实现详解
2018/11/21 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
塔吉特百货公司官网:Target
2017/04/27 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
英语系毕业生自荐信
2013/10/31 职场文书
运动会解说词100字
2014/01/31 职场文书
公务员考察材料范文
2014/12/23 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
学生通报表扬范文
2015/05/04 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
承诺书怎么写 ?
2019/04/16 职场文书