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

예제 소스

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

play_atari_sound.py

#!/usr/bin/env python3
"""단수(atari) 상황에서 삼국지 무장이 외치는 효과음.

사용법:
    python scripts/play_atari_sound.py
    python scripts/play_atari_sound.py --character 장비
    python scripts/play_atari_sound.py --character 관우
"""

import argparse
import random
import subprocess
import sys


CHARACTERS = {
    "장비": [
        "장비가 외친다! 단수다!",
        "단수! 장비가 알아챘다!",
        "위험하다! 단수 상황이다!",
    ],
    "관우": [
        "관우가 알린다! 단수입니다!",
        "단수! 관우가 경고한다!",
        "위기다! 단수 상황!",
    ],
    "조자룡": [
        "조자룡이 외친다! 단수!",
        "단수다! 조자룡이 발견했다!",
    ],
    "제갈량": [
        "제갈량이 계책을 알린다! 단수입니다!",
        "단수! 제갈량의 예측대로!",
    ],
}

SOUND_FILES = [
    "/System/Library/Sounds/Hero.aiff",
    "/System/Library/Sounds/Glass.aiff",
    "/System/Library/Sounds/Blow.aiff",
]


def play_atari_sound(character: str = None) -> None:
    """단수 효과음 재생."""
    if character is None:
        character = random.choice(list(CHARACTERS.keys()))
    
    messages = CHARACTERS.get(character, CHARACTERS["장비"])
    message = random.choice(messages)
    
    sound_file = random.choice(SOUND_FILES)
    
    try:
        subprocess.run(["afplay", sound_file], check=False)
    except FileNotFoundError:
        pass
    
    try:
        subprocess.run(["say", "-v", "Yuna", message], check=False)
    except FileNotFoundError:
        print(f"[ATARI] {message}")


def main(argv: list[str] = None) -> int:
    ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
    ap.add_argument("--character", choices=list(CHARACTERS.keys()), help="무장 선택 (기본: 랜덤)")
    ap.add_argument("--quiet", action="store_true", help="효과음만 재생 (음성 없음)")
    args = ap.parse_args(argv)
    
    if args.quiet:
        sound_file = random.choice(SOUND_FILES)
        try:
            subprocess.run(["afplay", sound_file], check=True)
        except FileNotFoundError:
            print("효과음 파일을 찾을 수 없습니다.")
            return 1
    else:
        play_atari_sound(args.character)
    
    return 0


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