aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/examples/sdk_example.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/sdk_example.py')
-rw-r--r--examples/sdk_example.py165
1 files changed, 0 insertions, 165 deletions
diff --git a/examples/sdk_example.py b/examples/sdk_example.py
deleted file mode 100644
index 6801686..0000000
--- a/examples/sdk_example.py
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/usr/bin/env python3
-"""
-OneRoll SDK 使用示例
-
-展示如何使用 OneRoll 作为 Python SDK 进行骰子投掷。
-"""
-
-import oneroll
-from rich.console import Console
-from rich.table import Table
-from rich.panel import Panel
-
-console = Console()
-
-def basic_usage_example():
- """基本使用示例"""
- console.print(Panel.fit("基本使用示例", style="bold blue"))
-
- # 使用便捷函数
- result = oneroll.roll("3d6 + 2")
- console.print(f"3d6 + 2 = {result['total']}")
-
- # 使用 OneRoll 类
- roller = oneroll.OneRoll()
- result = roller.roll("4d6kh3")
- console.print(f"4d6kh3 = {result['total']}")
-
- # 简单投掷
- total = oneroll.roll_simple(2, 10)
- console.print(f"2d10 = {total}")
-
-def dnd_example():
- """D&D 游戏示例"""
- console.print(Panel.fit("D&D 游戏示例", style="bold green"))
-
- roller = oneroll.OneRoll()
-
- # 属性投掷
- attr_result = roller.roll(oneroll.CommonRolls.ATTRIBUTE_ROLL)
- console.print(f"属性投掷 (4d6kh3): {attr_result['total']}")
-
- # 攻击投掷
- attack_roll = roller.roll("1d20 + 5")
- console.print(f"攻击投掷 (1d20 + 5): {attack_roll['total']}")
-
- # 伤害投掷
- damage_roll = roller.roll("2d6 + 3")
- console.print(f"伤害投掷 (2d6 + 3): {damage_roll['total']}")
-
- # 优势/劣势投掷
- advantage_roll = roller.roll(oneroll.CommonRolls.D20_ADVANTAGE)
- console.print(f"优势投掷 (2d20kh1): {advantage_roll['total']}")
-
-def statistics_example():
- """统计示例"""
- console.print(Panel.fit("统计示例", style="bold yellow"))
-
- # 多次投掷统计
- stats = oneroll.roll_statistics("3d6", 100)
-
- table = Table(title="3d6 投掷统计 (100次)")
- table.add_column("统计项", style="cyan")
- table.add_column("数值", style="green")
-
- table.add_row("最小值", str(stats['min']))
- table.add_row("最大值", str(stats['max']))
- table.add_row("平均值", f"{stats['mean']:.2f}")
- table.add_row("总和", str(stats['total']))
-
- console.print(table)
-
-def modifier_example():
- """修饰符示例"""
- console.print(Panel.fit("修饰符示例", style="bold magenta"))
-
- roller = oneroll.OneRoll()
-
- # 爆炸骰子
- explode_result = roller.roll("2d6!")
- console.print(f"爆炸骰子 (2d6!): {explode_result['total']}")
-
- # 取高
- keep_high_result = roller.roll("4d6kh3")
- console.print(f"取高 (4d6kh3): {keep_high_result['total']}")
-
- # 取低
- keep_low_result = roller.roll("4d6kl2")
- console.print(f"取低 (4d6kl2): {keep_low_result['total']}")
-
- # 丢弃高
- drop_high_result = roller.roll("5d6dh1")
- console.print(f"丢弃高 (5d6dh1): {drop_high_result['total']}")
-
- # 重投
- reroll_result = roller.roll("3d6r1")
- console.print(f"重投 (3d6r1): {reroll_result['total']}")
-
-def complex_expression_example():
- """复杂表达式示例"""
- console.print(Panel.fit("复杂表达式示例", style="bold red"))
-
- roller = oneroll.OneRoll()
-
- expressions = [
- "2d6 + 3d8 - 5",
- "(2d6 + 3) * 2",
- "4d6!kh3",
- "6d6dl2kh3",
- "3d6r1 + 2d8ro2",
- "10d10kh1",
- "2d20kh1 + 5"
- ]
-
- for expr in expressions:
- try:
- result = roller.roll(expr)
- console.print(f"{expr:15} = {result['total']:2d}")
- except Exception as e:
- console.print(f"{expr:15} = 错误: {e}")
-
-def error_handling_example():
- """错误处理示例"""
- console.print(Panel.fit("错误处理示例", style="bold red"))
-
- invalid_expressions = [
- "0d6",
- "3d0",
- "d6",
- "3d",
- "3d6 / 0",
- "invalid"
- ]
-
- for expr in invalid_expressions:
- try:
- result = oneroll.roll(expr)
- console.print(f"{expr:15} = {result['total']}")
- except Exception as e:
- console.print(f"{expr:15} = 错误: {e}")
-
-def main():
- """主函数"""
- console.print(Panel.fit("OneRoll SDK 使用示例", style="bold blue"))
-
- basic_usage_example()
- console.print()
-
- dnd_example()
- console.print()
-
- statistics_example()
- console.print()
-
- modifier_example()
- console.print()
-
- complex_expression_example()
- console.print()
-
- error_handling_example()
-
- console.print(Panel.fit("示例完成!", style="bold green"))
-
-if __name__ == "__main__":
- main()