""" 猜大小游戏 经典的骰子猜大小游戏 系统随机生成 1-6 的点数,玩家猜测是大还是小 """ import random import sys class GuessNumberGame: """猜大小游戏类""" def __init__(self): """初始化游戏""" self.player_name = "" self.score = 1000 # 初始分数 self.win_count = 0 self.lose_count = 0 self.total_games = 0 def display_title(self): """显示游戏标题""" print("\n" + "=" * 60) print("🎲 猜大小游戏 🎲") print("=" * 60) print("\n游戏规则:") print(" - 系统随机生成 1-6 的点数") print(" - 1-3 为小,4-6 为大") print(" - 猜对加分,猜错扣分") print(" - 初始分数:1000 分") print(" - 分数为 0 时游戏结束") 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 get_bet(self): """ 获取下注分数 Returns: 下注的分数 """ while True: try: bet = input(f"当前分数:{self.score} | 请输入下注分数 (1-{self.score}): ").strip() bet = int(bet) if 1 <= bet <= self.score: return bet else: print(f"❌ 请输入 1 到 {self.score} 之间的数字!") except ValueError: print("❌ 请输入有效的数字!") def get_guess(self): """ 获取玩家猜测 Returns: 'big' 或 'small' """ while True: guess = input("\n请猜大小 (大/小 或 b/s): ").strip().lower() if guess in ['大', 'big', 'b']: return 'big' elif guess in ['小', 'small', 's']: return 'small' else: print("❌ 请输入 '大'、'小'、'b' 或 's'!") def roll_dice(self): """ 掷骰子 Returns: 骰子点数 (1-6) """ return random.randint(1, 6) def is_big(self, number): """ 判断是否为大 Args: number: 骰子点数 Returns: True 表示大,False 表示小 """ return number >= 4 def play_round(self): """玩一轮游戏""" print("\n" + "-" * 60) print(f"第 {self.total_games + 1} 局") print("-" * 60) # 获取下注 bet = self.get_bet() # 获取猜测 guess = self.get_guess() # 掷骰子 print("\n🎲 正在掷骰子...") import time time.sleep(1) result = self.roll_dice() is_big = self.is_big(result) result_text = "大" if is_big else "小" print(f"\n🎯 骰子点数:{result} ({result_text})") # 判断输赢 if (guess == 'big' and is_big) or (guess == 'small' and not is_big): # 赢了 win_score = bet self.score += win_score self.win_count += 1 print(f"✅ 恭喜!你猜对了!赢得 {win_score} 分") else: # 输了 self.score -= bet self.lose_count += 1 print(f"❌ 很遗憾,你猜错了!失去 {bet} 分") self.total_games += 1 # 显示统计 print(f"\n📊 统计:胜 {self.win_count} 场 / 负 {self.lose_count} 场") print(f"📈 胜率:{self.win_count / self.total_games * 100:.1f}%") def check_game_over(self): """ 检查游戏是否结束 Returns: True 表示游戏结束 """ if self.score <= 0: print("\n" + "=" * 60) print("💸 游戏结束!你的分数已经用完了!") print("=" * 60) return True # 询问是否继续 while True: choice = input("\n是否继续游戏?(y/n): ").strip().lower() if choice in ['y', 'yes', '是']: return False elif choice in ['n', 'no', '否']: return True else: print("请输入 'y' 或 'n'!") def show_final_stats(self): """显示最终统计""" print("\n" + "=" * 60) print(f"🎮 {self.player_name} 的最终统计") print("=" * 60) print(f" 总游戏局数:{self.total_games}") print(f" 胜利:{self.win_count} 场") print(f" 失败:{self.lose_count} 场") print(f" 胜率:{self.win_count / max(1, self.total_games) * 100:.1f}%") print(f" 最终分数:{self.score}") if self.win_count > self.lose_count: print("\n🏆 表现不错!你是猜大小高手!") elif self.win_count == self.lose_count: print("\n👍 势均力敌!下次继续努力!") else: print("\n💪 不要气馁!再接再厉!") print("=" * 60) def run(self): """运行游戏主流程""" # 显示标题 self.display_title() # 获取玩家名字 self.get_player_name() # 游戏主循环 while True: # 玩一轮 self.play_round() # 检查是否结束 if self.check_game_over(): break # 显示最终统计 self.show_final_stats() print("\n感谢游玩!再见!👋\n") def main(): """主函数""" try: game = GuessNumberGame() game.run() except KeyboardInterrupt: print("\n\n游戏被中断!再见!👋\n") sys.exit(0) if __name__ == "__main__": main()