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实现截屏的函数
Jul 25 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
详解flask表单提交的两种方式
Jul 21 Python
python3的print()函数的用法图文讲解
Jul 16 Python
如何实现Django Rest framework版本控制
Jul 25 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
Django静态资源部署404问题解决方案
May 11 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Python如何执行精确的浮点数运算
Jul 31 Python
pymysql模块使用简介与示例
Nov 17 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 分页类实现代码
2009/12/03 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php实现httpRequest的方法
2015/03/13 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
汽车驾驶求职信
2013/10/25 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
环境科学毕业生自荐信
2013/11/21 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
防灾减灾活动总结
2014/08/30 职场文书
市场部经理岗位职责
2015/02/02 职场文书
商务英语求职信范文
2015/03/19 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
浅谈克隆 JavaScript
2021/11/02 Javascript
vue修饰符.capture和.self的区别
2022/04/22 Vue.js