面向过程的方式实现程序 用tkinter在button上显示图片,用户通过点击剪刀,石头或布对应的图片猜拳,电脑通过label标签随机出拳,根据猜拳规则在标签中显示输赢情况
时间: 2024-03-06 07:50:28 浏览: 60
用面向对象思想实现人机猜拳游戏。
好,以下是一个可能的实现:
```python
import tkinter as tk
import random
# 定义猜拳规则:1代表剪刀,2代表石头,3代表布
# 返回值为-1表示用户输,0表示平局,1表示用户赢
def compare(user, computer):
if user == computer:
return 0
elif (user == 1 and computer == 3) or \
(user == 2 and computer == 1) or \
(user == 3 and computer == 2):
return 1
else:
return -1
# 点击按钮时触发的函数
def play(user_choice):
# 随机出拳
computer_choice = random.randint(1, 3)
# 更新电脑出拳的标签
computer_choice_label.config(text="电脑出拳:" + ["剪刀", "石头", "布"][computer_choice-1])
# 比较猜拳结果并在结果标签中显示
result = compare(user_choice, computer_choice)
if result == 0:
result_label.config(text="平局")
elif result == 1:
result_label.config(text="你赢了!")
else:
result_label.config(text="你输了!")
# 创建窗口
window = tk.Tk()
window.title("猜拳游戏")
# 创建剪刀、石头、布三个按钮并分别绑定点击事件
scissors_button = tk.Button(window, text="剪刀", command=lambda: play(1))
scissors_button.grid(row=0, column=0, padx=10, pady=10)
rock_button = tk.Button(window, text="石头", command=lambda: play(2))
rock_button.grid(row=0, column=1, padx=10, pady=10)
paper_button = tk.Button(window, text="布", command=lambda: play(3))
paper_button.grid(row=0, column=2, padx=10, pady=10)
# 创建电脑出拳和结果标签
computer_choice_label = tk.Label(window, text="电脑出拳:")
computer_choice_label.grid(row=1, column=0, columnspan=3)
result_label = tk.Label(window, text="")
result_label.grid(row=2, column=0, columnspan=3)
# 运行窗口
window.mainloop()
```
这个程序使用了 Tkinter 这个库来创建窗口和按钮,并在按钮上显示剪刀、石头、布的图片。当用户点击按钮时,程序会随机生成电脑出拳的结果,并根据猜拳规则判断输赢。最后程序会在标签中显示电脑出拳结果和猜拳结果。
阅读全文