#!/usr/bin/env python3 """ 石头剪刀布游戏 玩家与电脑对决,记录胜负平局次数 """ import random import sys def get_computer_choice(): """随机返回电脑的选择""" choices = ['rock', 'paper', 'scissors'] return random.choice(choices) def get_player_choice(): """获取玩家的选择""" while True: print("\n请选择: (1)石头 (2)剪刀 (3)布 (q)退出") choice = input("你的选择: ").strip().lower() if choice == 'q': return None elif choice == '1' or choice == 'rock': return 'rock' elif choice == '2' or choice == 'scissors': return 'scissors' elif choice == '3' or choice == 'paper': return 'paper' else: print("无效的选择,请重试!") def determine_winner(player, computer): """判断胜负""" if player == computer: return 'draw' winning_combinations = { 'rock': 'scissors', # 石头赢剪刀 'scissors': 'paper', # 剪刀赢布 'paper': 'rock' # 布赢石头 } if winning_combinations[player] == computer: return 'player' else: return 'computer' def play_game(): """主游戏循环""" print("=" * 40) print("欢迎来到石头剪刀布游戏!") print("=" * 40) stats = {'player': 0, 'computer': 0, 'draw': 0} while True: player_choice = get_player_choice() if player_choice is None: break computer_choice = get_computer_choice() print(f"\n你的选择: {player_choice}") print(f"电脑的选择: {computer_choice}") winner = determine_winner(player_choice, computer_choice) if winner == 'player': print("🎉 你赢了!") stats['player'] += 1 elif winner == 'computer': print("💻 电脑赢了!") stats['computer'] += 1 else: print("🤝 平局!") stats['draw'] += 1 print(f"\n当前战绩: 你 {stats['player']} 胜, 电脑 {stats['computer']} 胜, 平局 {stats['draw']}") print("\n" + "=" * 40) print("游戏结束! 最终战绩:") print(f"你赢了 {stats['player']} 次") print(f"电脑赢了 {stats['computer']} 次") print(f"平局 {stats['draw']} 次") print("=" * 40) return stats def test_game(): """测试游戏逻辑""" print("正在测试游戏逻辑...") # 测试胜负判断 test_cases = [ ('rock', 'scissors', 'player'), ('rock', 'paper', 'computer'), ('rock', 'rock', 'draw'), ('scissors', 'paper', 'player'), ('scissors', 'rock', 'computer'), ('scissors', 'scissors', 'draw'), ('paper', 'rock', 'player'), ('paper', 'scissors', 'computer'), ('paper', 'paper', 'draw'), ] passed = 0 for player, computer, expected in test_cases: result = determine_winner(player, computer) if result == expected: passed += 1 else: print(f"测试失败: {player} vs {computer}, 预期 {expected}, 得到 {result}") print(f"测试完成: {passed}/{len(test_cases)} 通过") return passed == len(test_cases) if __name__ == "__main__": # 运行测试 if len(sys.argv) > 1 and sys.argv[1] == '--test': if test_game(): print("所有测试通过!") sys.exit(0) else: print("测试失败!") sys.exit(1) else: # 运行游戏 play_game()