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 getopt 参数处理小示例
Jun 09 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 Python
使用Eclipse如何开发python脚本
Apr 11 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python变量访问权限控制详解
Jun 29 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
Python中的特殊方法以及应用详解
Sep 20 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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之第八天
2006/10/09 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python中的Numpy入门教程
2014/04/26 Python
python中对list去重的多种方法
2014/09/18 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
python五子棋游戏的设计与实现
2019/06/18 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
七年级英语教学反思
2014/01/15 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
预备党员转正考核材料
2014/06/03 职场文书
董事长秘书工作职责
2014/06/10 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
食堂管理制度范本
2015/08/04 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书