diff --git a/game510k.py b/game510k.py new file mode 100644 index 0000000..60fd7e4 --- /dev/null +++ b/game510k.py @@ -0,0 +1,196 @@ +""" +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() diff --git a/play_510k.py b/play_510k.py new file mode 100644 index 0000000..f7c366e --- /dev/null +++ b/play_510k.py @@ -0,0 +1,8 @@ +""" +510K 扑克游戏启动文件 +""" + +from game510k import main + +if __name__ == "__main__": + main()