From c9d35892ac2c11ff6820c41832b91e8ede6c72f9 Mon Sep 17 00:00:00 2001 From: traetest Date: Mon, 13 Apr 2026 02:02:56 +0800 Subject: [PATCH] =?UTF-8?q?Add=20=E7=8C=9C=E5=A4=A7=E5=B0=8F=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=20-=20=E7=BB=8F=E5=85=B8=E9=AA=B0=E5=AD=90=E7=8C=9C?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E6=B8=B8=E6=88=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GUESS_README.md | 190 +++++++++++++++++++++++++++++++++++++++++ guess_game.py | 219 ++++++++++++++++++++++++++++++++++++++++++++++++ play_guess.py | 8 ++ 3 files changed, 417 insertions(+) create mode 100644 GUESS_README.md create mode 100644 guess_game.py create mode 100644 play_guess.py diff --git a/GUESS_README.md b/GUESS_README.md new file mode 100644 index 0000000..29f5a7c --- /dev/null +++ b/GUESS_README.md @@ -0,0 +1,190 @@ +# 🎲 猜大小游戏 + +经典的骰子猜大小游戏,简单易玩,乐趣无穷! + +## 🎮 游戏规则 + +1. **基本规则** + - 系统随机生成 1-6 的点数 + - 1-3 为小,4-6 为大 + - 猜测结果是"大"还是"小" + +2. **计分规则** + - 初始分数:1000 分 + - 猜对:赢得下注分数 + - 猜错:失去下注分数 + - 分数归零时游戏结束 + +3. **下注系统** + - 每局可以自由下注 + - 下注分数不能超过当前分数 + - 策略性下注,管理风险 + +## 🚀 快速开始 + +### 方法 1:运行启动文件 +```bash +python play_guess.py +``` + +### 方法 2:直接运行游戏 +```bash +python guess_game.py +``` + +## 🎯 游戏操作 + +| 输入 | 含义 | +|------|------| +| 大 / b | 猜大 | +| 小 / s | 猜小 | +| y / 是 | 继续游戏 | +| n / 否 | 结束游戏 | + +## 📖 游戏流程 + +``` +============================================================ +🎲 猜大小游戏 🎲 +============================================================ + +游戏规则: + - 系统随机生成 1-6 的点数 + - 1-3 为小,4-6 为大 + - 猜对加分,猜错扣分 + - 初始分数:1000 分 + - 分数为 0 时游戏结束 +============================================================ + +请输入你的名字:小明 + +你好,小明!让我们开始游戏吧! + +------------------------------------------------------------ +第 1 局 +------------------------------------------------------------ +当前分数:1000 | 请输入下注分数 (1-1000): 100 + +请猜大小 (大/小 或 b/s): 大 + +🎲 正在掷骰子... + +🎯 骰子点数:5 (大) +✅ 恭喜!你猜对了!赢得 100 分 + +📊 统计:胜 1 场 / 负 0 场 +📈 胜率:100.0% + +是否继续游戏?(y/n): y +``` + +## 🎲 概率说明 + +| 结果 | 点数 | 概率 | +|------|------|------| +| 大 | 4, 5, 6 | 50% | +| 小 | 1, 2, 3 | 50% | + +游戏使用真随机数生成器,确保公平性。 + +## 🏆 技巧提示 + +### 新手建议 +- 初期小额下注,熟悉游戏节奏 +- 保持心态平和,不要冲动 +- 设定输赢目标,及时收手 + +### 进阶策略 +- **马丁格尔策略**:输了加倍下注(风险高) +- **固定比例下注**:每次下注当前分数的固定比例 +- **止损策略**:设定最大亏损额度 + +### 风险提示 +⚠️ 这只是一个娱乐游戏,请勿沉迷! +⚠️ 游戏结果完全随机,没有必胜策略! + +## 📊 统计功能 + +游戏提供详细的统计数据: +- 总游戏局数 +- 胜利/失败场次 +- 胜率百分比 +- 最终分数 +- 表现评价 + +## 🎨 游戏特色 + +✅ 简单易懂的规则 +✅ 友好的用户界面 +✅ 实时统计显示 +✅ 智能输入验证 +✅ 完整的游戏流程 +✅ 鼓励性评价系统 + +## 💡 扩展建议 + +未来可以添加的功能: +- [ ] 连胜奖励机制 +- [ ] 特殊事件(暴击、连击) +- [ ] 排行榜系统 +- [ ] 多种游戏模式 +- [ ] AI 对手 +- [ ] 成就系统 +- [ ] 音效和动画 + +## 🔧 技术实现 + +### 核心技术 +- **random 模块** - 真随机数生成 +- **输入验证** - 确保用户输入合法 +- **异常处理** - 优雅处理中断和错误 +- **统计计算** - 实时数据追踪 + +### 代码结构 +``` +GuessNumberGame +├── __init__() # 初始化游戏状态 +├── display_title() # 显示标题 +├── get_player_name() # 获取玩家名字 +├── get_bet() # 获取下注 +├── get_guess() # 获取猜测 +├── roll_dice() # 掷骰子 +├── is_big() # 判断大小 +├── play_round() # 玩一轮 +├── check_game_over() # 检查结束 +├── show_final_stats() # 最终统计 +└── run() # 主流程 +``` + +## 📝 版本历史 + +### v1.0.0 +- ✅ 基础游戏功能 +- ✅ 下注系统 +- ✅ 统计功能 +- ✅ 用户界面优化 +- ✅ 输入验证 +- ✅ 异常处理 + +## 🎓 学习价值 + +通过这个游戏可以学习: +- Python 基础语法 +- 随机数生成 +- 用户输入处理 +- 游戏循环设计 +- 状态管理 +- 数据追踪 + +## 📄 许可证 + +MIT License + +## 🎉 开始游戏 + +```bash +# 无需安装额外依赖 +python play_guess.py +``` + +祝你好运!🎲🍀 diff --git a/guess_game.py b/guess_game.py new file mode 100644 index 0000000..e208361 --- /dev/null +++ b/guess_game.py @@ -0,0 +1,219 @@ +""" +猜大小游戏 +经典的骰子猜大小游戏 +系统随机生成 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() diff --git a/play_guess.py b/play_guess.py new file mode 100644 index 0000000..be6a657 --- /dev/null +++ b/play_guess.py @@ -0,0 +1,8 @@ +""" +猜大小游戏启动文件 +""" + +from guess_game import main + +if __name__ == "__main__": + main()