게시판SGF 기보로 학습하는 바둑 LLM 인공지능예제 소스

예제 소스

SGF 기보로 학습하는 바둑 LLM 인공지능 · 파일 169개

play_stone_sound.py

#!/usr/bin/env python3
"""바둑돌 놓는 효과음.

사용법:
    python scripts/play_stone_sound.py           # 일반 돌
    python scripts/play_stone_sound.py --black   # 흑돌 (낮은 톤)
    python scripts/play_stone_sound.py --white   # 백돌 (높은 톤)
    python scripts/play_stone_sound.py --capture # 잡기 효과음
"""

import argparse
import subprocess
import sys


def play_stone_sound(stone_type: str = "normal") -> None:
    """바둑돌 놓는 소리 재생."""
    
    # 실제 바둑돌 소리 (나무와 돌이 부딪치는 소리)
    sound_map = {
        "black": "sounds/stone_black.wav",      # 흑돌 (나무에 탁!)
        "white": "sounds/stone_white.wav",      # 백돌 (나무에 탁!)
        "normal": "sounds/stone_black.wav",     # 일반
        "capture": "sounds/stone_capture.wav",  # 잡기 (큰 탁!)
        "pass": "/System/Library/Sounds/Purr.aiff",  # 패스 (쓱)
    }
    
    sound_file = sound_map.get(stone_type, sound_map["normal"])
    
    try:
        subprocess.run(["afplay", sound_file], check=True, capture_output=True)
    except (FileNotFoundError, subprocess.CalledProcessError):
        print(f"[STONE] {stone_type} 효과음 재생 실패")
        return


def main(argv: list[str] = None) -> int:
    ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
    ap.add_argument("--black", action="store_true", help="흑돌 소리")
    ap.add_argument("--white", action="store_true", help="백돌 소리")
    ap.add_argument("--capture", action="store_true", help="잡기 소리")
    ap.add_argument("--pass", dest="pass_sound", action="store_true", help="패스 소리")
    args = ap.parse_args(argv)
    
    if args.black:
        play_stone_sound("black")
    elif args.white:
        play_stone_sound("white")
    elif args.capture:
        play_stone_sound("capture")
    elif args.pass_sound:
        play_stone_sound("pass")
    else:
        play_stone_sound("normal")
    
    return 0


if __name__ == "__main__":
    sys.exit(main())