Python实例-猜拳游戏(tkinter 文字版)
2022-07-05 本文已影响0人
小鱼儿_yzh
分析:
- 界面
从上往下依次是:
- 标题 “猜拳游戏”
- 提示文字: “请选择”
- 一行三个按钮,从左至右依次:剪子、包袱、锤子
- 用来点击运行游戏的按钮:出拳
- 提示信息部分:从上到下依次是:系统出拳、玩家出拳、结果
- 程序运行过程
用户选中“剪子”、“包袱”、“锤子” 三个铵钮中的一个后,按下 “出拳” 按钮触发事件,运行自定义函数 run() ,run()进行判断得出结果,把系统出拳和玩家出拳以及结果显示出来。
效果图:
代码:
from tkinter import *
import random
root = Tk()
root.geometry('400x400')
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',ipadx=0.5,fill='x')
# 游戏标题
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=10,side='top')
#设置三个单选按钮(value=0 时表示选中状态?)
for i in range(1,4):
R=Radiobutton(f_3button,text=list01[i-1],variable=v,value=i,width=10,height=2,relief='raised',anchor='center',indicatoron=0)
R.pack(pady=2,side='left',fill='x')
#出拳按钮,单击触发
judgebutton=Button(f_judge,text='出拳', width=10,height=2)
judgebutton.pack(pady=10,anchor='n',side='top')
judgebutton.bind('<Button-1>',run)
# 显示信息及结果
M_s = Message(root,textvariable=ms,width=100) #显示系统出拳
M_u = Message(root,textvariable=mu,width=100)#显示玩家出拳
M_result=Message(root,textvariable=mr,width=100)#显示结果
M_s.pack()
M_u.pack()
M_result.pack()
mainloop()
bug
在不选择三个选项的时候按“出拳”按钮也会运行游戏,当做选中锺来进行。需要进一步改进程序。