- 규칙 모듈 packages/games/src/dalmuti: 80장(광대 2장) 덱, 첫 신분 뽑기(동점 재뽑기), 신분 순서 분배, 혁명 확인 단계(혁명/대혁명), 세금 자동 이동과 돌려주기, 트릭 진행 (광대 와일드·13, passLocksOut), 라운드 종료와 순위 점수/마지막 라운드 순위, 시간 초과 자동 행동(리드: 가장 큰 숫자 전부, 따라 내기: 패스, 세금: 가장 큰 숫자), 연속 3회 시간 초과 시 5초 마감, 나가도 탈락 없이 자동 진행, view 정보 숨김 - 테스트: 문서 10절 시나리오 전부 + 1,000 시드 무작위 대국(카드 보존, 유출 검사, onTimeout 합법, 결정성) + 엔진 randomPlayout - 화면 apps/web/src/games/dalmuti: 자체 카드 그림, 숫자별 묶음 선택·장수 조절·광대 섞기, 내기/패스, 바닥 기준 표시, 신분 자리, 혁명 확인·세금 교환 화면, 규칙·옵션 - 등록: GAMES, catalog, registry, GAME_ICON - E2E: PC 방장 + 휴대폰 3명, 1라운드 끝까지 진행 후 2라운드 세금 교환 화면 확인 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import type { AnyGameDefinition } from '@bg/engine';
|
|
import { omok } from './omok';
|
|
import { othello } from './othello';
|
|
import { chess } from './chess';
|
|
import { janggi } from './janggi';
|
|
import { baduk } from './baduk';
|
|
import { seotda } from './seotda';
|
|
import { poker } from './poker';
|
|
import { yacht } from './yacht';
|
|
import { yut } from './yut';
|
|
import { oneCard } from './one-card';
|
|
import { rummikub } from './rummikub';
|
|
import { davinci } from './davinci-code';
|
|
import { mahjong } from './mahjong';
|
|
import { gostop } from './gostop';
|
|
import { bang } from './bang';
|
|
import { halliGalli } from './halli-galli';
|
|
import { marble } from './marble';
|
|
import { dalmuti } from './dalmuti';
|
|
|
|
export const GAMES: Record<string, AnyGameDefinition> = {
|
|
[omok.id]: omok,
|
|
[othello.id]: othello,
|
|
[chess.id]: chess,
|
|
[janggi.id]: janggi,
|
|
[baduk.id]: baduk,
|
|
[seotda.id]: seotda,
|
|
[poker.id]: poker,
|
|
[yacht.id]: yacht,
|
|
[yut.id]: yut,
|
|
[oneCard.id]: oneCard,
|
|
[rummikub.id]: rummikub,
|
|
[davinci.id]: davinci,
|
|
[mahjong.id]: mahjong,
|
|
[gostop.id]: gostop,
|
|
[bang.id]: bang,
|
|
[halliGalli.id]: halliGalli,
|
|
[marble.id]: marble,
|
|
[dalmuti.id]: dalmuti,
|
|
};
|