帮忙用pyhon写个囚徒困境的联机游戏:要有界面要有按钮要有每次选择的统计
时间: 2024-04-30 14:17:52 浏览: 87
利用python制作一个游戏
好的,这个游戏可以用Python的GUI库Tkinter来实现。下面是一个简单的囚徒困境游戏实现:
```python
import tkinter as tk
class Game:
def __init__(self):
self.window = tk.Tk()
self.window.title("囚徒困境游戏")
self.window.geometry("400x400")
self.score = {"player1": 0, "player2": 0}
self.player1_choice = tk.StringVar()
self.player2_choice = tk.StringVar()
self.player1_choice.set("选择合作或背叛")
self.player2_choice.set("选择合作或背叛")
self.player1_label = tk.Label(self.window, text="玩家1")
self.player1_label.place(x=50, y=50)
self.player1_button1 = tk.Button(self.window, text="合作", command=lambda: self.player1_choose("合作"))
self.player1_button1.place(x=50, y=100)
self.player1_button2 = tk.Button(self.window, text="背叛", command=lambda: self.player1_choose("背叛"))
self.player1_button2.place(x=50, y=150)
self.player1_choice_label = tk.Label(self.window, textvariable=self.player1_choice)
self.player1_choice_label.place(x=50, y=200)
self.player2_label = tk.Label(self.window, text="玩家2")
self.player2_label.place(x=250, y=50)
self.player2_button1 = tk.Button(self.window, text="合作", command=lambda: self.player2_choose("合作"))
self.player2_button1.place(x=250, y=100)
self.player2_button2 = tk.Button(self.window, text="背叛", command=lambda: self.player2_choose("背叛"))
self.player2_button2.place(x=250, y=150)
self.player2_choice_label = tk.Label(self.window, textvariable=self.player2_choice)
self.player2_choice_label.place(x=250, y=200)
self.score_label = tk.Label(self.window, text="得分")
self.score_label.place(x=150, y=250)
self.player1_score_label = tk.Label(self.window, text="玩家1得分:0")
self.player1_score_label.place(x=50, y=300)
self.player2_score_label = tk.Label(self.window, text="玩家2得分:0")
self.player2_score_label.place(x=250, y=300)
self.window.mainloop()
def player1_choose(self, choice):
self.player1_choice.set("玩家1选择了:" + choice)
self.check_choices()
def player2_choose(self, choice):
self.player2_choice.set("玩家2选择了:" + choice)
self.check_choices()
def check_choices(self):
p1_choice = self.player1_choice.get().split(":")[1]
p2_choice = self.player2_choice.get().split(":")[1]
if p1_choice == "选择合作或背叛" or p2_choice == "选择合作或背叛":
return
if p1_choice == "合作" and p2_choice == "合作":
self.score["player1"] += 3
self.score["player2"] += 3
elif p1_choice == "合作" and p2_choice == "背叛":
self.score["player1"] += 0
self.score["player2"] += 5
elif p1_choice == "背叛" and p2_choice == "合作":
self.score["player1"] += 5
self.score["player2"] += 0
elif p1_choice == "背叛" and p2_choice == "背叛":
self.score["player1"] += 1
self.score["player2"] += 1
self.player1_score_label.config(text="玩家1得分:" + str(self.score["player1"]))
self.player2_score_label.config(text="玩家2得分:" + str(self.score["player2"]))
game = Game()
```
这个游戏有两个玩家,每个玩家可以选择“合作”或“背叛”。游戏会根据两个玩家的选择来计算每个玩家的得分。得分规则如下:
- 如果两个玩家都选择了“合作”,则两个玩家都得到3分。
- 如果玩家1选择了“合作”,玩家2选择了“背叛”,则玩家1得到0分,玩家2得到5分。
- 如果玩家1选择了“背叛”,玩家2选择了“合作”,则玩家1得到5分,玩家2得到0分。
- 如果两个玩家都选择了“背叛”,则玩家1和玩家2都得到1分。
游戏界面有四个按钮,两个玩家分别可以点击选择“合作”或“背叛”。每个玩家选择后,游戏会自动计算得分并显示在界面上。同时,界面上还有两个标签分别显示每个玩家的选择和得分。
注意:这只是一个简单的实现,游戏规则和界面可以根据需求进行修改。
阅读全文