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将html转成PDF的实现代码(包含中文)
Mar 04 Python
处理Python中的URLError异常的方法
Apr 30 Python
详解Django中的form库的使用
Jul 18 Python
pandas修改DataFrame列名的方法
Apr 08 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
keras 多任务多loss实例
Jun 22 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
python 破解加密zip文件的密码
Apr 22 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
一个简单的PHP投票程序源码
2007/03/11 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php控制文件下载速度的方法
2015/03/24 PHP
DOM 基本方法
2009/07/18 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
Python反射的用法实例分析
2018/02/11 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
丧事主持词大全
2014/04/02 职场文书
教代会闭幕词
2015/01/28 职场文书
追悼会悼词大全
2015/06/23 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android