tkinter做幸存者游戏代码
时间: 2024-02-04 22:39:16 浏览: 49
幸存者游戏是一种非常有趣的游戏。下面是一个简单的幸存者游戏的Tkinter代码实现,具体规则如下:
1. 游戏开始时,有10个玩家,每个玩家有100点生命值。
2. 每个回合开始时,每个玩家都要扣除1~10点生命值,生命值为0的玩家被淘汰。
3. 在每个回合结束时,生命值最高的玩家获得10分,生命值第二高的玩家获得5分,其他玩家没有得分。
4. 游戏一直进行到最后只剩下一个玩家为止,该玩家获得胜利。
代码如下:
```python
import random
import tkinter as tk
class SurvivorGame:
def __init__(self):
self.players = []
self.turn = 1
self.winner = None
# 创建玩家
for i in range(10):
self.players.append({
"name": f"Player {i + 1}",
"health": 100,
"score": 0
})
def play_turn(self):
self.log(f"Turn {self.turn} begins.")
# 每个玩家扣除生命值
for player in self.players:
damage = random.randint(1, 10)
player["health"] -= damage
if player["health"] <= 0:
self.log(f"{player['name']} gets eliminated!")
# 计算得分
sorted_players = sorted(self.players, key=lambda x: x["health"], reverse=True)
sorted_players[0]["score"] += 10
sorted_players[1]["score"] += 5
# 判断是否结束游戏
alive_players = [p for p in self.players if p["health"] > 0]
if len(alive_players) == 1:
self.winner = alive_players[0]
self.log(f"{self.winner['name']} wins the game!")
return
# 打印玩家状态
for player in self.players:
self.log(f"{player['name']} - health: {player['health']}, score: {player['score']}")
self.turn += 1
def log(self, message):
textbox.insert(tk.END, f"{message}\n")
textbox.see(tk.END)
# 创建游戏实例
game = SurvivorGame()
# 创建窗口
window = tk.Tk()
window.title("Survivor Game")
# 创建游戏日志文本框
textbox = tk.Text(window)
textbox.pack()
# 创建开始游戏按钮
start_button = tk.Button(window, text="Start Game", command=game.play_turn)
start_button.pack()
window.mainloop()
```
在上面的代码中,我们首先创建了一个 `SurvivorGame` 类,该类包含了游戏中的所有逻辑。在 `__init__` 方法中,我们创建了10个玩家,每个玩家有100点生命值和0分得分。在 `play_turn` 方法中,我们模拟了每个回合的游戏逻辑。首先,每个玩家会扣除1~10点生命值,如果生命值变为0或更低,该玩家将被淘汰。然后,我们计算生命值最高的两个玩家的得分,并打印每个玩家的状态。最后,我们检查是否只剩下一个玩家,如果是,该玩家将获得胜利。在 `log` 方法中,我们将游戏日志输出到文本框中。在代码的最后,我们创建了一个Tkinter窗口,并在窗口中添加了一个文本框和一个开始游戏按钮。当玩家点击开始游戏按钮时,游戏将开始运行。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)