python 21点 图形化
时间: 2023-06-28 20:11:18 浏览: 49
要实现21点的图形化,你可以使用Python中的GUI库,如Tkinter、PyQt、wxPython等。以下是一个使用Tkinter实现的简单21点游戏:
```python
import tkinter as tk
import random
class TwentyOne(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
self.reset()
def create_widgets(self):
self.title = tk.Label(self, text="21点游戏", font=("Helvetica", 16))
self.title.grid(row=0, column=0, columnspan=3, pady=10)
self.player_score = tk.Label(self, text=f"玩家得分: {self.player_total}")
self.player_score.grid(row=1, column=0)
self.dealer_score = tk.Label(self, text=f"庄家得分: {self.dealer_total}")
self.dealer_score.grid(row=1, column=2)
self.cards = tk.Label(self, text="")
self.cards.grid(row=2, column=0, columnspan=3, pady=10)
self.hit_button = tk.Button(self, text="要牌", command=self.hit)
self.hit_button.grid(row=3, column=0, padx=5, pady=10)
self.stand_button = tk.Button(self, text="停牌", command=self.stand)
self.stand_button.grid(row=3, column=2, padx=5, pady=10)
def reset(self):
self.player_cards = []
self.dealer_cards = []
self.player_total = 0
self.dealer_total = 0
self.game_over = False
self.cards.config(text="")
self.hit_button.config(state="normal")
self.stand_button.config(state="normal")
self.deal()
def deal(self):
self.player_cards.append(self.draw_card())
self.player_cards.append(self.draw_card())
self.dealer_cards.append(self.draw_card())
self.dealer_cards.append(self.draw_card())
self.update_scores()
self.check_winner()
def draw_card(self):
return random.randint(1, 10)
def update_scores(self):
self.player_total = sum(self.player_cards)
self.dealer_total = sum(self.dealer_cards)
self.player_score.config(text=f"玩家得分: {self.player_total}")
self.dealer_score.config(text=f"庄家得分: {self.dealer_total}")
self.cards.config(text=f"玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards[0]}")
def hit(self):
self.player_cards.append(self.draw_card())
self.update_scores()
self.check_winner()
def stand(self):
self.hit_button.config(state="disabled")
self.stand_button.config(state="disabled")
while self.dealer_total < 17:
self.dealer_cards.append(self.draw_card())
self.update_scores()
self.check_winner()
def check_winner(self):
if self.player_total > 21:
self.cards.config(text=f"玩家爆了!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
elif self.dealer_total > 21:
self.cards.config(text=f"庄家爆了!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
elif len(self.player_cards) == 5:
self.cards.config(text=f"玩家五小龙!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
elif self.player_total == 21:
self.cards.config(text=f"玩家21点!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
elif self.dealer_total == 21:
self.cards.config(text=f"庄家21点!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
elif self.game_over:
if self.player_total > self.dealer_total:
self.cards.config(text=f"玩家胜利!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
elif self.player_total < self.dealer_total:
self.cards.config(text=f"庄家胜利!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
else:
self.cards.config(text=f"平局!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
elif self.dealer_total >= 17:
if self.player_total > self.dealer_total:
self.cards.config(text=f"玩家胜利!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
else:
self.cards.config(text=f"庄家胜利!\n玩家手牌: {self.player_cards}\n庄家手牌: {self.dealer_cards}")
self.game_over = True
root = tk.Tk()
app = TwentyOne(master=root)
app.mainloop()
```
这个游戏使用了Tkinter作为GUI库,并且实现了21点游戏的基本规则。你可以根据自己的需要对游戏进行修改和扩展。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)