基于pycharm的石头剪刀布游戏gui开发显示图片比赛记录和树状图
时间: 2023-12-16 21:24:07 浏览: 104
游戏软件(石头剪刀布)
好的,如果您想在基于PyCharm的石头剪刀布游戏GUI中显示图片比赛记录和树状图,您需要使用一些第三方库来完成这些任务。
首先,您可以使用Pillow库来处理图片。您需要在PyCharm中安装Pillow库。在PyCharm的终端中,输入以下命令来安装Pillow:
```
pip install Pillow
```
然后,您可以使用Matplotlib库来创建树状图。同样地,您需要在PyCharm中安装Matplotlib库。在PyCharm的终端中,输入以下命令来安装Matplotlib:
```
pip install matplotlib
```
下面是一个更新后的示例代码,其中包括了图片比赛记录和树状图:
```python
from tkinter import *
from PIL import Image, ImageTk
import random
import matplotlib.pyplot as plt
# 创建窗口
root = Tk()
root.title("石头剪刀布游戏")
# 创建标签、按钮和文本框
label = Label(root, text="请选择:石头、剪刀、布")
label.pack()
button1 = Button(root, text="石头")
button2 = Button(root, text="剪刀")
button3 = Button(root, text="布")
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
text_box = Text(root, height=10, width=50)
text_box.pack()
# 创建变量来跟踪比赛记录和胜率
record = []
wins = 0
losses = 0
ties = 0
# 创建函数来处理按钮点击事件
def play_game(player_choice):
global wins, losses, ties
choices = ['石头', '剪刀', '布']
computer_choice = random.choice(choices)
result = ""
if player_choice == computer_choice:
result = "平局"
ties += 1
elif player_choice == "石头" and computer_choice == "剪刀":
result = "你赢了!"
wins += 1
elif player_choice == "剪刀" and computer_choice == "布":
result = "你赢了!"
wins += 1
elif player_choice == "布" and computer_choice == "石头":
result = "你赢了!"
wins += 1
else:
result = "你输了!"
losses += 1
# 将结果添加到记录中
record.append(f"你选择了 {player_choice},电脑选择了 {computer_choice},结果是 {result}")
# 显示结果和记录
label.config(text=f"你选择了 {player_choice},电脑选择了 {computer_choice},结果是 {result}")
text_box.delete(1.0, END)
for r in record:
text_box.insert(END, r + "\n")
# 显示胜率
total = wins + losses + ties
win_rate = wins / total * 100
loss_rate = losses / total * 100
tie_rate = ties / total * 100
label2.config(text=f"胜率:{win_rate:.1f}% 输率:{loss_rate:.1f}% 平局率:{tie_rate:.1f}%")
# 显示图片比赛记录
if result == "你赢了!":
image = Image.open("win.png")
elif result == "你输了!":
image = Image.open("lose.png")
else:
image = Image.open("tie.png")
image = image.resize((100, 100))
photo = ImageTk.PhotoImage(image)
label3.config(image=photo)
label3.image = photo
# 显示树状图
plt.clf()
plt.bar(["胜利", "失败", "平局"], [wins, losses, ties])
plt.title("比赛记录统计")
plt.xlabel("结果")
plt.ylabel("次数")
plt.ylim(0, total)
plt.tight_layout()
plt.savefig("chart.png")
image2 = Image.open("chart.png")
image2 = image2.resize((300, 200))
photo2 = ImageTk.PhotoImage(image2)
label4.config(image=photo2)
label4.image = photo2
# 将按钮绑定到函数上
button1.config(command=lambda: play_game("石头"))
button2.config(command=lambda: play_game("剪刀"))
button3.config(command=lambda: play_game("布"))
# 创建标签来显示胜率和图片比赛记录
label2 = Label(root, text="")
label2.pack()
image = Image.open("win.png")
image = image.resize((100, 100))
photo = ImageTk.PhotoImage(image)
label3 = Label(root, image=photo)
label3.pack()
# 创建标签来显示树状图
image2 = Image.open("chart.png")
image2 = image2.resize((300, 200))
photo2 = ImageTk.PhotoImage(image2)
label4 = Label(root, image=photo2)
label4.pack()
# 运行窗口
root.mainloop()
```
在这个更新的代码中,我们添加了两个新的标签来显示胜率和图片比赛记录。我们还使用Matplotlib库创建了一个树状图来显示比赛结果。在play_game()函数中,我们首先计算胜率并更新标签2来显示胜率。然后,我们根据比赛结果加载相应的图片,并将其显示在标签3中。最后,我们使用Matplotlib库创建一个树状图,并将其保存为一个图像文件。我们使用Pillow库加载该图像文件,并将其显示在标签4中。
这个例子只是一个简单的例子,您可以根据需要自定义图片和树状图的格式。希望这可以帮助您实现在基于PyCharm的石头剪刀布游戏GUI中显示图片比赛记录和树状图。
阅读全文