Tkinter图形绘制——图形版发牌程序

☆樱花仙子☆ 提交于 2020-03-09 14:56:44

开发工具:pycharm

游戏介绍: 机随机将52张牌(不含大王和小王)发给四位牌手,在屏幕上显示每位牌手的牌

程序设计步骤:

程序设计思路

将要发的52张牌,按梅花0~12,方块13-  25,红桃26- 38,黑桃39-  51的顺序编号并存储在pocker列表c未洗牌之前l,列表元素存储的是某张牌c实际上是牌的编号)。同时,按此编号将扑克牌图片顺序存储在imgs列表中。也就是说,imgs[0]存储梅花A的图片,imgs[1]存储梅花2的图片,imgs[14]存储方块2的图片,依次类推。

发牌后,根据每位牌手(pl,p2,p3,p4)各自牌的编号列表,从imgs获取对应牌的图片,并使用create- image《x坐标,y坐标),image=图像文件)将牌显示在指定位置。

3.Canvas图形绘制技术

Canvas为Tkinter提供了绘图功能,其提供的图形绘制函数可绘制线形、圆形、椭圆、多边形、图片等。

Canvas画布组件

Canvas(画布)是一个长方形的区域,用于图形绘制或复杂的图形界面布局。用户以在画布上绘制图形、文字,放置各种组件和框架。

可以使用下面的方法创建一个Canvas对象。

Canvas对象嚣Canvas  (窗口对象+  选项+  …)

显示Canvas对象的方法如下。

Canvas对象。pack()

Canvas上的图形对象

参考代码:

from tkinter import *
import random
n=52
def gen_pocker(n):
    x=100
    while(x>0):
        x=x-1
        p1=random.randint(0,n-1)
        p2=random.randint(0,n-1)
        t=pocker[p1]
        pocker[p1]=pocker[p2]
        pocker[p2]=t
    return pocker
pocker=[i for i in range(n)]
pocker=gen_pocker(n)
print(pocker)

(player1,player2,player3,player4)=([],[],[],[])
(p1,p2,p3,p4)=([],[],[],[])
root=Tk()

cv=Canvas(root,bg='White',width=700,height=600)
imgs=[]
for i in range(1,5):
    for j in range(1,14):
        imgs.insert((i-1)*13+(j-1),PhotoImage(file='images\\'+str(i)+'-'+str(j)+'.gif'))
for x in range(13):
    m=x*4
    p1.append(pocker[m])
    p2.append(pocker[m+1])
    p3.append(pocker[m+2])
    p4.append(pocker[m+3])
p1.sort()
p2.sort()
p3.sort()
p4.sort()

for x in range(0,13):
    img=imgs[p1[x]]
    player1.append(cv.create_image((200+20*x,80),image=img))
    img=imgs[p2[x]]
    player2.append(cv.create_image((100 ,150+20 * x), image=img))
    img = imgs[p3[x]]
    player3.append(cv.create_image((200 + 20 *x, 500), image=img))
    img = imgs[p4[x]]
    player4.append(cv.create_image((560,150+20 * x), image=img))

print("player1:",player1)
print("player2:",player2)
print("player3:",player3)
print("player4:",player4)
cv.pack()
root.mainloop()

运行界面:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!