通过python中tkinter库来开发这个程序的。
游戏规则:4位玩家打牌,计算机随机将52张牌(不含大小王)发给4位玩家,在屏幕上显示每位玩家的牌。程序运行效果如下
分析:
其思路和控制台程序一样。将要发的52张牌按梅花0~12、方块13~25、红桃26~38~黑桃39~51顺序编号并存储在pocker列表(未洗牌之前)中,同时按此编号顺序存储扑克牌图片于imgs列表中。也就是说,imgs[0]存储梅花A的图片,imgs[1]存储梅2的图片,imgs[14]存储方块2的图片。
发牌后,根据每位玩家(pl、p2、p3、p4)的牌的编号列表从imgs列表中获取对应牌的图片,并使用create_image((x坐标,y坐标), image=图像文件)显示在指定位置。
代码如下:
from tkinter import *
import random
a1=100
a2=200
a3=100
a4=200
image1=[]
image2=[]
image3=[]
image4=[]
#扑克牌数组
arr=['3梅花.png','4梅花.png','5梅花.png','6梅花.png','7梅花.png','8梅花.png','9梅花.png','10梅花.png','J梅花.png','Q梅花.png','K梅花.png','A梅花.png','2梅花.png',
'3方片.png','4方片.png','5方片.png','6方片.png','7方片.png','8方片.png','9方片.png','10方片.png','J方片.png','Q方片.png','K方片.png','A方片.png','2方片.png',
'3红桃.png','4红桃.png','5红桃.png','6红桃.png','7红桃.png','8红桃.png','9红桃.png','10红桃.png','J红桃.png','Q红桃.png','K红桃.png','A红桃.png','2红桃.png',
'3黑桃.png','4黑桃.png','5黑桃.png','6黑桃.png','7黑桃.png','8黑桃.png','9黑桃.png','10黑桃.png','J黑桃.png','Q黑桃.png','K黑桃.png','A黑桃.png','2黑桃.png']
random.shuffle(arr)
def fun1(i): #左边的牌
global a1
#x=arr[i]
s = "C:\\Users\\29311\\Desktop\\扑克牌\\" + arr[i]
bm = PhotoImage(file=s)
image1.append(bm)
lan=Label(root,image=bm)
lan.place(x=80,y=a1)
a1+=30
def fun2(i): #上边的牌
global a2
s = "C:\\Users\\29311\\扑克牌\\" + arr[i] 路径
bm = PhotoImage(file=s)
image2.append(bm)
lenn=Label(root,image=bm)
lenn.place(x=a2,y=20)
a2+=30
def fun3(i): #右边的牌
global a3
s = "C:\\Users\\29311\\扑克牌\\" + arr[i]
bm = PhotoImage(file=s)
image3.append(bm)
lenn=Label(root,image=bm)
lenn.place(x=680,y=a3)
a3+=30
def fun4(i): #下边的牌
global a4
s = "C:\\Users\\29311\\扑克牌\\" + arr[i]
bm = PhotoImage(file=s)
image4.append(bm)
lenn=Label(root,image=bm)
lenn.place(x=a4,y=550)
a4+=30
root=Tk()
root.geometry("850x700")
for i in [0,4,8,12,16,20,24,28,32,36,40,44,48]:
fun1(i)
fun2(i+1)
fun3(i+2)
fun4(i+3)
print(image1)
root.mainloop()