Add 猜大小游戏 - 经典骰子猜大小游戏
This commit is contained in:
+190
@@ -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
|
||||
```
|
||||
|
||||
祝你好运!🎲🍀
|
||||
+219
@@ -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()
|
||||
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
猜大小游戏启动文件
|
||||
"""
|
||||
|
||||
from guess_game import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user