Python 专题

Python实例-猜拳游戏(tkinter图片版)

2022-07-06  本文已影响0人  小鱼儿_yzh

分析:

本程序是上一版的改进升级,本次升级主要还是界面的改进,把用于玩家选择的三个Raidobutton从原来的文字变成图片,然后把结果的出示由原来的上下三行显示,变成左中右三部分来显示,把结果设置一个前景色突出显示。
依旧没有解决上次的问题,玩家不选择直接出拳也可运行。
考虑应该是加一状态检查功能,检查玩家是否在上面的三个按钮中做出选择,如果没做选择,不运行程序,而是弹出提示,提示玩家进行选择。
后面继续学习,如果做出判断以及如何弹出提示框或出示提示信息也行。

效果图:

代码:

from tkinter import *
import random
root = Tk()
root.geometry('400x500')
root.title('猜拳游戏')
list01 = ['剪子','包袱','锤子']

# 定义变量
u=IntVar()
v=IntVar()
ms = StringVar()
mu = StringVar()
mr = StringVar()

#响应事件,判断

def run(event):
    s = random.randint(1,3)
    u=v.get()
    ms.set('系统出拳'+list01[s-1])
    mu.set('玩家出拳'+list01[u-1])    
    if (s==1 and u==2) or (s ==2 and u==3)or(s==3 and u==1):
        mr.set('系统赢!')
    elif (s==u):        
        mr.set('平局!')
    else:        
        mr.set('玩家赢!')
   
# Frame布局一下吧
f_title = Frame(root)
f_title.pack(side='top')
f_tip = Frame(root)
f_tip .pack(side = 'top')
f_3button = Frame(root)
f_3button.pack(side = 'top')
f_judge =Frame(root)
f_judge .pack(side = 'top')
f_message =Frame(root)
f_message .pack(side = 'top')

# 游戏标题
L_title=Label(f_title,text='猜拳游戏',font=('隶书',40))
L_title.pack(pady=20,side='top')

#提示选择
L_user=Label(f_tip,text='请选择:',font=('楷书',20))
L_user.pack(pady=20,side='top')

#设置三个单选按钮
img1 = PhotoImage(file='jiandao.png')
img2 = PhotoImage(file='baofu.png')
img3 = PhotoImage(file='chui.png')
r1 = Radiobutton(f_3button,text =list01[0],image=img1,variable=v,value=1,indicatoron=0)
r1.pack(pady=2,side='left',fill = 'x')
r2 = Radiobutton(f_3button,text =list01[1],image=img2,variable=v,value=2,indicatoron=0)
r2.pack(pady=2,padx=20,side='left',fill = 'x')
r3 = Radiobutton(f_3button,text =list01[2],image=img3,variable=v,value=3,indicatoron=0)
r3.pack(pady=2,side='left',fill = 'x')

#出拳按钮,单击触发
judgebutton=Button(f_judge,text='选定出拳', width=10,height=2,font=('楷体',18))
judgebutton.pack(pady=20,anchor='n',side='top')
judgebutton.bind('<Button-1>',run)

# 显示信息及结果
img_win=PhotoImage(file='chui.png')
M_s = Message(f_message,textvariable=ms,width=100,font=('宋体',16),justify='center') #显示系统出拳
M_result=Message(f_message,textvariable=mr,width=110,font=('宋体',20),fg='red',justify='center')#显示结果
M_u = Message(f_message,textvariable=mu,width=100,font=('宋体',16),justify='center')#显示玩家出拳
M_s.pack(side='left',fill='x')
M_result.pack(side= 'left',fill='x' ,padx=30)
M_u.pack(side='left',fill='x')

root.mainloop()
上一篇下一篇

猜你喜欢

热点阅读