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 相关文章推荐
Django框架中render_to_response()函数的使用方法
Jul 16 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python如何实现视频转代码视频
Jun 17 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python实现双色球随机选号
Jan 01 Python
在Python 的线程中运行协程的方法
Feb 24 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
python中entry用法讲解
Dec 04 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
一个SQL管理员的web接口
2006/10/09 PHP
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
简述Python2与Python3的不同点
2018/01/21 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
法国在线药房:1001Pharmacies
2021/03/07 全球购物
继电保护工岗位职责
2014/01/05 职场文书
社区活动总结报告
2014/05/05 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
逃课检讨书范文
2015/05/06 职场文书
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android