""" 510K 扑克游戏 经典的 5、10、K 比大小游戏 """ import random import sys class Card: """扑克牌类""" def __init__(self, value): self.value = value self.display = {5: '5', 10: '10', 13: 'K'}[value] def __str__(self): return self.display def __repr__(self): return self.display class Game510K: """510K 游戏类""" def __init__(self): """初始化游戏""" self.player_name = "" self.player_score = 0 self.computer_score = 0 self.rounds = 0 # 牌堆(5、10、K 各 4 张) self.deck = [] for _ in range(4): self.deck.extend([Card(5), Card(10), Card(13)]) # 牌的大小关系:K > 10 > 5 self.power = {5: 1, 10: 2, 13: 3} def display_title(self): """显示游戏标题""" print("\n" + "=" * 60) print("🃏 510K 扑克游戏 🃏") print("=" * 60) print("\n游戏规则:") print(" - 牌堆包含 5、10、K 各 4 张(共 12 张)") print(" - 大小关系:K > 10 > 5") print(" - 玩家和电脑各抽一张牌比大小") print(" - 赢者得 1 分") print(" - 牌抽完后游戏结束") print("=" * 60) def get_player_name(self): """获取玩家名字""" self.player_name = input("\n请输入你的名字:").strip() if not self.player_name: self.player_name = "玩家" print(f"\n你好,{self.player_name}!让我们开始游戏吧!\n") def shuffle_deck(self): """洗牌""" random.shuffle(self.deck) print("🔀 正在洗牌...") def draw_card(self): """ 抽牌 Returns: 抽到的牌 """ if len(self.deck) > 0: return self.deck.pop() return None def compare_cards(self, player_card, computer_card): """ 比较两张牌 Args: player_card: 玩家的牌 computer_card: 电脑的牌 Returns: 'player' 玩家赢,'computer' 电脑赢,'draw' 平局 """ player_power = self.power[player_card.value] computer_power = self.power[computer_card.value] if player_power > computer_power: return 'player' elif player_power < computer_power: return 'computer' else: return 'draw' def play_round(self): """玩一轮游戏""" self.rounds += 1 print("\n" + "-" * 60) print(f"第 {self.rounds} 局") print("-" * 60) print(f"剩余牌数:{len(self.deck)}") # 玩家抽牌 input(f"\n{self.player_name},按 Enter 键抽牌...") player_card = self.draw_card() # 电脑抽牌 print(f"\n🤖 电脑抽牌中...") computer_card = self.draw_card() # 显示双方牌面 print(f"\n👤 {self.player_name}: [{player_card}]") print(f"🤖 电脑:[{computer_card}]") # 比较大小 result = self.compare_cards(player_card, computer_card) if result == 'player': print(f"\n✅ {self.player_name} 赢了!{player_card} > {computer_card}") self.player_score += 1 elif result == 'computer': print(f"\n❌ 电脑赢了!{computer_card} > {player_card}") self.computer_score += 1 else: print(f"\n🤝 平局!双方都是 {player_card}") # 显示比分 print(f"\n📊 比分:{self.player_name} {self.player_score} : {self.computer_score} 电脑") def is_game_over(self): """ 检查游戏是否结束 Returns: True 表示游戏结束 """ return len(self.deck) == 0 def show_final_results(self): """显示最终结果""" print("\n" + "=" * 60) print(f"🎮 游戏结束!{self.player_name} 的最终统计") print("=" * 60) print(f" 总回合数:{self.rounds}") print(f" {self.player_name} 得分:{self.player_score}") print(f" 电脑得分:{self.computer_score}") # 判定最终胜负 if self.player_score > self.computer_score: print(f"\n🏆 恭喜!{self.player_name} 获胜!") elif self.player_score < self.computer_score: print(f"\n💪 电脑获胜,{self.player_name} 再接再厉!") else: print(f"\n👍 势均力敌,打成平手!") print("=" * 60) def run(self): """运行游戏主流程""" try: # 显示标题 self.display_title() # 获取玩家名字 self.get_player_name() # 洗牌 self.shuffle_deck() # 游戏主循环 while not self.is_game_over(): self.play_round() # 显示最终结果 self.show_final_results() print("\n感谢游玩!再见!👋\n") except KeyboardInterrupt: print("\n\n游戏被中断!再见!👋\n") if self.rounds > 0: self.show_final_results() def main(): """主函数""" game = Game510K() game.run() if __name__ == "__main__": main()