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