Skill: zx0018/coin-dice-game (version 1.0.0)

--- name: coin-dice-game description: "抛硬币（正/反）和猜骰子大小（大/小）游戏。随机生成结果后发送对应图片。" license: MIT-0 --- # 抛硬币 & 猜骰子大小 🎲🪙 当用户说"抛硬币"、"猜骰子"、"玩游戏"时触发。 ## 游戏规则 ### 抛硬币 - 随机 0 或 1 - **0 = 正**（正面），**1 = 反**（反面） - 发送对应的正/反图片 ### 猜骰子大小 - 随机 0 或 1 - **0 = 大**（显示 4/5/6 中随机一个），**1 = 小**（显示 1/2/3 中随机一个） - 发送对应的点数和大小图片 ## 图片资源 8 个图片存放于 `assets/` 目录下，文件名对应： | 文件名 | 内容 | |--------|------| | `正面.jpg` | 硬币正面（正） | | `反面.jpg` | 硬币反面（反） | | `1.jpg` | 骰子 1 点 | | `2.jpg` | 骰子 2 点 | | `3.jpg` | 骰子 3 点 | | `4.jpg` | 骰子 4 点 | | `5.jpg` | 骰子 5 点 | | `6.jpg` | 骰子 6 点 | ## 使用方式 ```bash # 抛硬币 python3 scripts/game.py coin # 猜骰子大小 python3 scripts/game.py dice ``` ## 流程 1. 用户说要玩游戏（抛硬币/猜骰子） 2. 运行对应的脚本生成随机结果 3. 从 `assets/` 中找到对应图片 4. 通过 `message` 工具发送图片 + 文字结果 - 图片用 `MEDIA:<assets/图片名>` 或 `message` 的 `attachments`/`media` 参数发送 ## 图片保存 老师会发 8 张图片给我，我保存到 `assets/` 目录下，文件名对应上表。 ## 发送示例 ```python # 抛硬币结果：正 # 图片路径：skills/coin-dice-game/assets/正面.jpg ```

path: scripts/game.py
content: #!/usr/bin/env python3
"""
抛硬币 & 猜骰子大小 游戏引擎
随机生成结果并返回对应的图片索引
"""

import random
import sys

IMAGE_MAP = {
    "coin": {
        0: {"label": "正", "image": "正面"},
        1: {"label": "反", "image": "反面"},
    },
    "dice": {
        "big":  {0: {"label": "4", "image": "4"},
                 1: {"label": "5", "image": "5"},
                 2: {"label": "6", "image": "6"}},
        "small": {0: {"label": "1", "image": "1"},
                  1: {"label": "2", "image": "2"},
                  2: {"label": "3", "image": "3"}},
    }
}

def flip_coin():
    """抛硬币：返回 0=正 或 1=反"""
    result = random.randint(0, 1)
    return {
        "type": "coin",
        "result_raw": result,
        "result_label": IMAGE_MAP["coin"][result]["label"],
        "result_image": IMAGE_MAP["coin"][result]["image"],
    }

def roll_dice():
    """猜骰子大小：
       0=大(4-6), 1=小(1-3)
       然后在大/小范围内随机选一个具体数字
    """
    size = random.randint(0, 1)  # 0=大, 1=小
    if size == 0:
        size_label = "大"
        detail = random.randint(0, 2)  # 4, 5, 6
        entry = IMAGE_MAP["dice"]["big"][detail]
    else:
        size_label = "小"
        detail = random.randint(0, 2)  # 1, 2, 3
        entry = IMAGE_MAP["dice"]["small"][detail]

    return {
        "type": "dice",
        "result_raw": size,
        "result_label": size_label,
        "detail_label": entry["label"],
        "detail_image": entry["image"],
    }

def main():
    if len(sys.argv) < 2:
        print("用法: python3 game.py <coin|dice>", file=sys.stderr)
        sys.exit(1)

    game_type = sys.argv[1].lower()
    if game_type == "coin":
        result = flip_coin()
        print(f"抛硬币结果：{result['result_label']}")
        print(f"图片：{result['result_image']}")
    elif game_type == "dice":
        result = roll_dice()
        print(f"骰子大小结果：{result['result_label']}")
        print(f"具体点数：{result['detail_label']}")
        print(f"图片：{result['detail_image']}")
    else:
        print(f"未知游戏类型：{game_type}", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()


path: scripts/game.sh
content: #!/bin/bash
# 抛硬币 & 猜骰子游戏 - 快捷脚本
# 用法: ./scripts/game.sh coin|dice

SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"

case "$1" in
  coin)
    RESULT=$(python3 "$SKILL_DIR/scripts/game.py" coin)
    LABEL=$(echo "$RESULT" | grep "^抛硬币结果：" | cut -d： -f2)
    IMG=$(echo "$RESULT" | grep "^图片：" | cut -d： -f2)
    echo "结果：$LABEL"
    echo "图片路径：$SKILL_DIR/assets/$IMG.jpg"
    echo "MEDIA:$SKILL_DIR/assets/$IMG.jpg"
    ;;
  dice)
    RESULT=$(python3 "$SKILL_DIR/scripts/game.py" dice)
    SIZE=$(echo "$RESULT" | grep "^骰子大小结果：" | cut -d： -f2)
    POINT=$(echo "$RESULT" | grep "^具体点数：" | cut -d： -f2)
    IMG=$(echo "$RESULT" | grep "^图片：" | cut -d： -f2)
    echo "结果：$SIZE"
    echo "点数：$POINT"
    echo "图片路径：$SKILL_DIR/assets/$IMG.jpg"
    echo "MEDIA:$SKILL_DIR/assets/$IMG.jpg"
    ;;
  *)
    echo "用法: $0 coin|dice"
    exit 1
    ;;
esac


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)