用python扑克随机发牌_python实现扑克牌交互式界面发牌程序

本文实例为大家分享了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持WEB开发者。

暂无相关信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值