/** 도블 30초 규칙 요약 (docs/07 §5). Pictures reuse the game's own icons (art.tsx). */
import type { ReactNode } from 'react';
import { ICONS } from './art';
import type { QuickCard } from '../types';
// Icon ids (art.tsx order): 사과 0, 해 1, 별 3, 하트 4, 꽃 11, 고양이 18, 물고기 20, 열쇠 28, 모자 36, 종 38, 자동차 41, 주사위 45.
const SLOTS: [number, number][] = [
[0, 0],
[0, -26],
[24, -12],
[24, 14],
[0, 28],
[-24, 14],
[-24, -12],
];
function Icon({ art, x, y, size = 20, ring }: { art: number; x: number; y: number; size?: number; ring?: 'ok' | 'bad' }) {
const draw = ICONS[art];
return (
{ring && }
{draw ? draw() : null}
);
}
/** A round card at (cx, cy) with up to 7 icons; `rings` marks icons by id. */
function RoundCard({ cx, cy, arts, rings = {} }: { cx: number; cy: number; arts: number[]; rings?: Record }) {
return (
{arts.map((a, i) => (
))}
);
}
function Pic({ children }: { children: ReactNode }) {
return (
);
}
const A = [18, 0, 1, 3, 11, 28, 45];
const B = [20, 41, 18, 36, 4, 38, 33];
export const quickStart: QuickCard[] = [
{
pic: (
가운데 카드
내 카드
),
alt: '그림이 여러 개 그려진 동그란 카드 두 장이 나란히 있어요',
title: '두 카드를 비교해요',
text: '동그란 카드 두 장에는 똑같은 그림이 언제나 딱 하나 있어요. 차례 없이 모두 동시에 그 그림을 찾아요.',
},
{
pic: (
고양이 찾았다!
),
alt: '두 카드 모두에 있는 고양이 그림에 초록 동그라미, 한쪽에만 있는 물고기에 빨간 동그라미가 있어요',
title: '같은 그림을 먼저 눌러요',
text: '찾은 그림을 두 카드 중 아무 쪽에서나 누르면 돼요. 가장 먼저 누른 사람만 성공이에요. 틀리면 방 규칙에 따라 잠깐 못 눌러요.',
},
{
pic: (
{[0, 1, 2, 3].map((i) => (
))}
🏆
),
alt: '동그란 카드가 탑처럼 쌓여 있고 옆에 트로피가 있어요',
title: '미니게임마다 목표가 달라요',
text: '탑 쌓기는 많이 모으면, 우물은 내 카드를 먼저 비우면, 독이 든 선물은 적게 받으면, 뜨거운 감자는 벌점이 적으면 이겨요.',
},
];