예제 소스
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())