@jjlmoya/utils-tabletop 1.27.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -0
  3. package/src/entries.ts +2 -0
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/tool_validation.test.ts +1 -1
  6. package/src/tool/mus-scoreboard/bibliography.astro +16 -0
  7. package/src/tool/mus-scoreboard/bibliography.ts +12 -0
  8. package/src/tool/mus-scoreboard/component.astro +179 -0
  9. package/src/tool/mus-scoreboard/controller.ts +178 -0
  10. package/src/tool/mus-scoreboard/dom-views.ts +87 -0
  11. package/src/tool/mus-scoreboard/entry.ts +27 -0
  12. package/src/tool/mus-scoreboard/evaluator.ts +27 -0
  13. package/src/tool/mus-scoreboard/i18n/de.ts +187 -0
  14. package/src/tool/mus-scoreboard/i18n/en.ts +187 -0
  15. package/src/tool/mus-scoreboard/i18n/es.ts +187 -0
  16. package/src/tool/mus-scoreboard/i18n/fr.ts +187 -0
  17. package/src/tool/mus-scoreboard/i18n/id.ts +187 -0
  18. package/src/tool/mus-scoreboard/i18n/it.ts +187 -0
  19. package/src/tool/mus-scoreboard/i18n/ja.ts +187 -0
  20. package/src/tool/mus-scoreboard/i18n/ko.ts +187 -0
  21. package/src/tool/mus-scoreboard/i18n/nl.ts +187 -0
  22. package/src/tool/mus-scoreboard/i18n/pl.ts +187 -0
  23. package/src/tool/mus-scoreboard/i18n/pt.ts +187 -0
  24. package/src/tool/mus-scoreboard/i18n/ru.ts +187 -0
  25. package/src/tool/mus-scoreboard/i18n/sv.ts +187 -0
  26. package/src/tool/mus-scoreboard/i18n/tr.ts +187 -0
  27. package/src/tool/mus-scoreboard/i18n/zh.ts +187 -0
  28. package/src/tool/mus-scoreboard/index.ts +11 -0
  29. package/src/tool/mus-scoreboard/logic.test.ts +82 -0
  30. package/src/tool/mus-scoreboard/logic.ts +122 -0
  31. package/src/tool/mus-scoreboard/online-mus-scoreboard.css +740 -0
  32. package/src/tool/mus-scoreboard/seo.astro +16 -0
  33. package/src/tool/mus-scoreboard/storage.ts +29 -0
  34. package/src/tool/mus-scoreboard/ui.ts +63 -0
  35. package/src/tools.ts +2 -0
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: '2つのペア名を入力し、テーブルルールを設定後、各ハンドの得点計算に合わせてピエドラ(Piedras)をタップしてください。',
7
+ pairOneLabel: 'ペア 1',
8
+ pairTwoLabel: 'ペア 2',
9
+ pairOneDefault: '北テーブル',
10
+ pairTwoDefault: '南テーブル',
11
+ targetPointsLabel: '1ゲーム(Chico)の目標ポイント',
12
+ targetPointsHint: '各ゲームの勝利ポイントを選択してください(30、40、または50ポイント)。',
13
+ gamesToWinLabel: 'バカ(Vaca)勝利に必要なゲーム数',
14
+ gamesToWinHint: '最初にこのゲーム数に達したペアがマッチに勝利します。',
15
+ deckLabel: '使用するカードデッキ',
16
+ deckHint: '40枚のスペイン伝統デッキ(Baraja española)がMusの標準です。フランスデッキは8, 9, 10を除外して使用します。',
17
+ spanishDeck: 'Baraja española(スペインデッキ)',
18
+ frenchDeck: 'フランスデッキ(通常トランプ)',
19
+ frenchDeckNotice: 'フランスデッキを使用する場合は、8, 9, 10を取り除いて40枚でプレイしてください。JはSota、QはCaballo、KはReyに対応します。',
20
+ pointsOption30: '30 ポイント',
21
+ pointsOption40: '40 ポイント',
22
+ pointsOption50: '50 ポイント',
23
+ gamesOption1: '1 ゲーム',
24
+ gamesOption2: '2 ゲーム',
25
+ gamesOption3: '3 ゲーム',
26
+ startMatch: 'スコアボードを開く',
27
+ matchSettings: 'ペアとルールを設定',
28
+ liveMatch: '対局中スコア',
29
+ targetLabel: 'ポイント制ゲーム',
30
+ gameLabel: 'ゲーム',
31
+ gamePlural: 'ゲーム',
32
+ vacaLabel: 'ゲーム先取で勝利',
33
+ scoreLabel: '現在のピエドラ数(Piedras)',
34
+ handLabel: 'このハンドの先手(Mano)ペアを選択',
35
+ handSelected: 'が先手(Mano)です。',
36
+ stonesLabel: '得点カウンター',
37
+ stoneSingular: '1点(Piedra)',
38
+ stonePlural: 'ピエドラ(Piedras)',
39
+ amarracoSingular: '5点(Amarraco)',
40
+ amarracoPlural: 'アマラコ(Amarracos)',
41
+ pointsToGo: 'ポイントで勝利',
42
+ addStone: '1点(Piedra)',
43
+ addAmarraco: '5点(Amarraco)',
44
+ closeGame: 'ゲーム(Chico)を終了して確定',
45
+ closeGamePrompt: 'このペアがゲーム(Chico)に勝利したことを確認し、次のゲームを開始しますか?',
46
+ confirmationTitle: 'テーブル操作の確認',
47
+ confirmAction: '確認して進む',
48
+ cancelAction: 'プレイを続ける',
49
+ undo: '元に戻す',
50
+ resetMatch: 'マッチをリセット',
51
+ resetMatchPrompt: '現在のマッチ를リセットし、スコア履歴を消去しますか?',
52
+ historyTitle: '直近の記録',
53
+ noHistory: 'まだ記録がありません。得点を入力するとここに表示されます。',
54
+ matchReady: 'テーブルの準備が完了しました。',
55
+ closeGameHint: 'いずれかのペアが目標ポイントに達しました。勝利を確定させてください。',
56
+ waitingForScore: '計算を続けてください。リードしているペアの残りポイント:',
57
+ gameWon: 'ゲーム(Chico)終了。',
58
+ vacaWon: 'バカ(Vaca)獲得!準備ができたら新しいマッチを開始してください。',
59
+ gameClosed: 'がゲーム(Chico)を獲得しました。',
60
+ pointsAdded: 'が獲得:',
61
+ matchSaved: 'スコアはこの端末に自動保存されます。',
62
+ lastAction: '直近の操作',
63
+ settingsApplied: '新しいルールが適用され、マッチがリセットされました。',
64
+ pairNameRequired: 'スコアボードを開く前に両方のペア名を入力してください。',
65
+ visualScoreLabel: 'Mus対局用デジタルスコアボード(ピエドラ・アマラコ対応)',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: 'このオンラインMusスコアボードでは何が記録できますか?',
71
+ answer: '2つのペア名、ピエドラ(Piedras, 1点単位)、アマラコ(Amarracos, 5点単位)、勝利ゲーム数(Chicos)、全体勝敗(Vaca)、先手(Mano)の位置、および直近の得点履歴をリアルタイムで記録できます。',
72
+ },
73
+ {
74
+ question: 'なぜピエドラ(Piedras)とアマラコ(Amarracos)が分けて表示されるのですか?',
75
+ answer: '1ピエドラ(Piedra)は1点、1アマラコ(Amarraco)は5点に相当します。分けて表示することで、卓上の実際の代用チップや豆と簡単に照合できます。',
76
+ },
77
+ {
78
+ question: '30点、40点、50点ゲームに対応していますか?',
79
+ answer: 'はい。スコアボードを開く前に、1ゲーム(Chico)の目標ポイントを30点、40点、50点から自由に選択できます。',
80
+ },
81
+ {
82
+ question: '目標ポイントに達したゲームはどうやって終了しますか?',
83
+ answer: 'いずれかのペアが目標ポイントに達すると「ゲーム終了して確定」ボタンが有効になります。確認後、勝利ゲーム数(Chicos)が加算され、ピエドラがリセットされます。',
84
+ },
85
+ {
86
+ question: 'ページを再読み込みしてもデータは保持されますか?',
87
+ answer: 'はい。対局設定、ペア名、現在の得点、勝利ゲーム数はブラウザのローカルストレージに自動保存されます。',
88
+ },
89
+ {
90
+ question: 'このスコアボードは特定のローカルルールを強制しますか?',
91
+ answer: 'いいえ。Musには多様な地域ルールが存在します。このスコアボードは正確な得点管理に集中し、サインや声掛けは実卓のプレイヤーに委ねています。',
92
+ },
93
+ {
94
+ question: '通常トランプ(フランスデッキ)で遊ぶにはどうすればよいですか?',
95
+ answer: '8, 9, 10を取り除いて40枚にします。JはSota、QはCaballo、KはReyに対応し、3はK、2はAとして扱います。',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: 'ペア名を入力する',
102
+ text: '対戦する2つのペア名を入力し、テーブル上での配置を明確にします。',
103
+ },
104
+ {
105
+ name: '目標ポイントとバカ(Vaca)勝利数を設定する',
106
+ text: '1ゲーム(Chico)の目標(30, 40, 50点)とバカ(Vaca)獲得に必要なゲーム数を設定します。',
107
+ },
108
+ {
109
+ name: 'ハンドごとの得点を加算する',
110
+ text: '各勝負(Grande, Chica, Pares, Juego, Punto)の決着に応じて、ピエドラ(+1)やアマラコ(+5)をタップします。',
111
+ },
112
+ {
113
+ name: 'ゲーム勝利を確定させる',
114
+ text: '目標ポイント到達時、ゲーム勝利を確定してゲーム数を更新し、ピエドラをリセットします。',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: 'オンライン ムス スコアボード',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: 'スペイン伝統のカードゲーム Mus(ムス)専用デジタルカウンター。',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: 'Mus(ムス)対局での得点記録方法',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'online-mus-scoreboard',
156
+ title: 'オンライン ムス スコアボード',
157
+ description: 'スペイン伝統のカードゲーム Mus(ムス)の得点(Piedras)、アマラコ(Amarracos)、ゲーム(Chicos)、バカ(Vacas)をリアルタイム記録。',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: '白熱するMus対局に明確でスピーディーなデジタル得点管理を', level: 2 },
161
+ { type: 'paragraph', html: 'Mus(ムス)はブラフとチームワークが魅力のスペイン伝統カードゲームです。1ハンドの中で複数の勝負(Grande, Chica, Pares, Juego, Punto)が順次計算されるため、デジタルカウンターを使用することで計算違いを防ぎ、スムーズなゲーム進行を実現します。' },
162
+ { type: 'title', text: '最初のハンドを配る前に目標ポイントを設定', level: 2 },
163
+ { type: 'paragraph', html: '一般的な40点勝負のほか、30点や50点で行うローカルルールも多く存在します。カードを配る前に目標ポイントと勝利条件を設定し、スコア表示を実卓と同期させましょう。' },
164
+ {
165
+ type: 'table',
166
+ headers: ['設定', '効果', '推奨プレイ'],
167
+ rows: [
168
+ ['30 ポイント', 'ショートゲーム', '手軽な短時間対局やトーナメント予選向け'],
169
+ ['40 ポイント', '標準ゲーム', '伝統的で最も普及しているクラシックルール'],
170
+ ['50 ポイント', 'ロングゲーム', 'より深い駆け引きを楽しみたいじっくり対局向け'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: 'テーブルルールを事前に声を出して確認', html: 'カードを切る前に「3をK、2をAとする8枚K・8枚Aルール」の適用有無や、チップ管理担当者を全員で確認しましょう。' },
174
+ { type: 'title', text: 'スペインデッキ(Baraja española)とフランスデッキの互換対応', level: 2 },
175
+ { type: 'paragraph', html: '伝統的な40枚のスペインデッキ(Baraja española)が基本ですが、通常のトランプ(フランスデッキ)から8, 9, 10を取り除くことでもプレイ可能です。JはSota、QはCaballo、KはReyに対応します。' },
176
+ { type: 'title', text: '実卓のチップとデジタル表示のリアルタイム照合', level: 2 },
177
+ { type: 'paragraph', html: 'メイン数字で合計点を示し、その直下で自動的にアマラコ(Amarracos, 5点ブロック)とピエドラ(Piedras, 1点)に換算表示するため、卓上の実物チップとの照合が極めて簡単です。' },
178
+ { type: 'list', items: ['<strong>Piedra:</strong> 1点単位の得点。', '<strong>Amarraco:</strong> 5ピエドラ相当の集計単位。', '<strong>Chico:</strong> 目標ポイント到達で獲得する1セット。', '<strong>Vaca:</strong> 所定のゲーム数を先取して得る最終勝利。'] },
179
+ { type: 'title', text: 'ゲームの勝利確定と誤操作の取り消し', level: 2 },
180
+ { type: 'paragraph', html: '目標点に達した際、ゲーム確定ボタンを押すことで安全にゲーム数をカウントアップします。誤って加算した場合は「元に戻す」ボタンで即座に直前の状態へ戻せます。' },
181
+ { type: 'tip', title: '誤入力時は「元に戻す」ボタンを活用', html: '申告ミスやタップミスが発生した場合は、すぐに元に戻すボタンを押すことで履歴を乱さずに修正できます。' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: '두 페어의 이름을 입력하고 테이블 규칙을 설정한 후, 핸드별 점수 계산에 맞춰 돌(Piedras)을 탭하세요.',
7
+ pairOneLabel: '페어 1',
8
+ pairTwoLabel: '페어 2',
9
+ pairOneDefault: '노스 테이블',
10
+ pairTwoDefault: '사우스 테이블',
11
+ targetPointsLabel: '게임(Chico)당 목표 점수',
12
+ targetPointsHint: '각 게임의 목표 점수를 선택하세요 (30, 40 또는 50점).',
13
+ gamesToWinLabel: '바카(Vaca) 승리에 필요한 게임 수',
14
+ gamesToWinHint: '이 게임 수에 먼저 도달하는 페어가 매치에서 승리합니다.',
15
+ deckLabel: '사용할 카드 덱',
16
+ deckHint: '40장의 스페인 전통 덱(Baraja española)이 무스(Mus)의 기본입니다. 프랑스 덱은 8, 9, 10을 제외하고 사용합니다.',
17
+ spanishDeck: 'Baraja española (스페인 덱)',
18
+ frenchDeck: '프랑스 덱 (일반 카드)',
19
+ frenchDeckNotice: '프랑스 덱을 사용할 경우 8, 9, 10을 제거하여 40장으로 플레이하세요. Jack은 Sota, Queen은 Caballo, King은 Rey에 대응합니다.',
20
+ pointsOption30: '30 점',
21
+ pointsOption40: '40 점',
22
+ pointsOption50: '50 점',
23
+ gamesOption1: '1 게임',
24
+ gamesOption2: '2 게임',
25
+ gamesOption3: '3 게임',
26
+ startMatch: '스코어보드 열기',
27
+ matchSettings: '페어 및 규칙 설정',
28
+ liveMatch: '실시간 매치',
29
+ targetLabel: '점수 게임',
30
+ gameLabel: '게임',
31
+ gamePlural: '게임',
32
+ vacaLabel: '게임 선승 시 완료',
33
+ scoreLabel: '현재 점수 (Piedras)',
34
+ handLabel: '이번 핸드의 선(Mano) 페어 선택',
35
+ handSelected: '이(가) 선(Mano)입니다.',
36
+ stonesLabel: '점수 카운터',
37
+ stoneSingular: '1점 (Piedra)',
38
+ stonePlural: '점수 (Piedras)',
39
+ amarracoSingular: '5점 (Amarraco)',
40
+ amarracoPlural: '5점 칩 (Amarracos)',
41
+ pointsToGo: '점 남음',
42
+ addStone: '1점 (Piedra)',
43
+ addAmarraco: '5점 (Amarraco)',
44
+ closeGame: '게임(Chico) 종료 및 확정',
45
+ closeGamePrompt: '이 페어가 게임(Chico)에서 승리했음을 확인하고 다음 게임을 시작하시겠습니까?',
46
+ confirmationTitle: '테이블 조작 확인',
47
+ confirmAction: '확인',
48
+ cancelAction: '계속 플레이',
49
+ undo: '실행 취소',
50
+ resetMatch: '매치 리셋',
51
+ resetMatchPrompt: '현재 매치를 리셋하고 점수 기록을 삭제하시겠습니까?',
52
+ historyTitle: '최근 기록',
53
+ noHistory: '아직 기록이 없습니다. 점수를 입력하면 여기에 표시됩니다.',
54
+ matchReady: '테이블 준비가 완료되었습니다.',
55
+ closeGameHint: '목표 점수에 도달한 페어가 있습니다. 게임 승자를 확정하세요.',
56
+ waitingForScore: '계속 점수를 계산하세요. 선두 페어의 남은 점수:',
57
+ gameWon: '게임(Chico) 종료.',
58
+ vacaWon: '바카(Vaca) 승리! 준비가 되면 새 매치를 시작하세요.',
59
+ gameClosed: '이(가) 게임(Chico)을 획득했습니다.',
60
+ pointsAdded: '이(가) 획득:',
61
+ matchSaved: '점수가 이 기기에 자동 저장됩니다.',
62
+ lastAction: '최근 작업',
63
+ settingsApplied: '새 규칙이 적용되고 매치가 리셋되었습니다.',
64
+ pairNameRequired: '스코어보드를 열기 전에 두 페어의 이름을 모두 입력하세요.',
65
+ visualScoreLabel: 'Mus 카드 게임용 실시간 디지털 점수판',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: '이 온라인 무스(Mus) 스코어보드는 무엇을 기록하나요?',
71
+ answer: '두 페어 이름, 돌(Piedras), 아마라코(Amarracos), 획득 게임 수(Chicos), 바카(Vaca) 승리, 선(Mano) 위치 및 최근 점수 기록을 실시간으로 관리합니다.',
72
+ },
73
+ {
74
+ question: '돌(Piedras)과 아마라코(Amarracos)는 왜 따로 표시되나요?',
75
+ answer: '1점(Piedra)과 5점 칩(Amarraco)을 따로 표시하여 실제 테이블 위에 놓인 피스나 칩과 쉽게 대조할 수 있게 도와줍니다.',
76
+ },
77
+ {
78
+ question: '30점, 40점, 50점 게임 설정이 가능한가요?',
79
+ answer: '네. 스코어보드를 열기 전에 게임(Chico)당 목표 점수를 30점, 40점, 50점 중에서 자유롭게 선택할 수 있습니다.',
80
+ },
81
+ {
82
+ question: '목표 점수에 도달한 게임은 어떻게 종료하나요?',
83
+ answer: '목표 점수에 도달하면 게임 종료 버튼이 활성화됩니다. 승자를 확정하면 1게임(Chico)이 추가되고 점수(Piedras)가 0으로 초기화됩니다.',
84
+ },
85
+ {
86
+ question: '페이지를 새로고침해도 점수가 유지되나요?',
87
+ answer: '네. 게임 설정, 페어 이름, 점수 및 게임 승리 기록은 브라우저에 안전하게 자동 저장됩니다.',
88
+ },
89
+ {
90
+ question: '특정 지역의 무스(Mus) 규칙을 강제로 적용하나요?',
91
+ answer: '아니요. 무스에는 다양한 지역 규칙이 존재합니다. 이 디지털 스코어보드는 정확한 점수 기록에 집중하며, 수신호와 멘트는 테이블 플레이어에게 맡깁니다.',
92
+ },
93
+ {
94
+ question: '일반 카드로 무스 게임을 하려면 어떻게 하나요?',
95
+ answer: '프랑스 덱에서 8, 9, 10을 제외하여 40장으로 만듭니다. Jack은 Sota, Queen은 Caballo, King은 Rey로 사용합니다.',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: '페어 이름 입력',
102
+ text: '테이블에서 식별하기 쉽도록 두 페어의 이름을 입력합니다.',
103
+ },
104
+ {
105
+ name: '목표 점수 및 바카(Vaca) 설정',
106
+ text: '게임당 목표 점수(30, 40, 50점)와 바카(Vaca) 승리에 필요한 게임 수를 선택합니다.',
107
+ },
108
+ {
109
+ name: '점수(Piedras) 및 아마라코(Amarracos) 계산',
110
+ text: '각 핸드 승부(Grande, Chica, Pares, Juego, Punto) 결과에 따라 1점(Piedra) 또는 5점(Amarraco)을 탭합니다.',
111
+ },
112
+ {
113
+ name: '게임 승리 확정',
114
+ text: '목표 점수 도달 시 승자를 확정하여 게임 수를 기록하고 점수를 초기화합니다.',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: '온라인 무스 스코어보드',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: '스페인 전통 카드 게임 Mus(무스) 전용 실시간 디지털 점수판.',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: '무스 카드 게임 점수 기록 방법',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'online-mus-scoreboard',
156
+ title: '온라인 무스(Mus) 스코어보드',
157
+ description: '스페인 전통 카드 게임 무스(Mus)의 점수(Piedras), 아마라코(Amarracos), 게임(Chicos), 바카(Vacas)를 실시간으로 기록하세요.',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: '무스 카드 게임을 위한 명확하고 빠른 실시간 점수판', level: 2 },
161
+ { type: 'paragraph', html: '무스(Mus)는 심리전과 페어워크가 돋보이는 스페인 전통 카드 게임입니다. 한 핸드 내에서 여러 승부(Grande, Chica, Pares, Juego, Punto)가 진행되므로 디지털 점수판을 사용하면 계산 착오를 방지할 수 있습니다.' },
162
+ { type: 'title', text: '첫 카드를 나누기 전에 목표 점수 설정', level: 2 },
163
+ { type: 'paragraph', html: '일반적인 40점 경기 외에도 30점이나 50점 경기 규칙도 많이 사용됩니다. 첫 딜링 전에 목표 점수를 맞춰 디지털 점수판을 테이블과 동기화하세요.' },
164
+ {
165
+ type: 'table',
166
+ headers: ['설정', '효과', '추천 게임'],
167
+ rows: [
168
+ ['30 점', '단판 경기', '빠른 매치나 토너먼트 예선에 적합'],
169
+ ['40 점', '표준 경기', '가장 대중적이고 전통적인 클래식 규칙'],
170
+ ['50 점', '장기 경기', '더 깊은 전략과 넉넉한 턴을 즐기는 매치'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: '테이블 규칙을 소리 내어 확인', html: '카드를 떼기 전에 8킹과 8에이스 규칙(3을 K로, 2를 A로 처리) 및 칩 담당자를 두 페어가 함께 확인하세요.' },
174
+ { type: 'title', text: '스페인 덱(Baraja española)과 프랑스 덱의 호환성', level: 2 },
175
+ { type: 'paragraph', html: '전통적인 40장 스페인 덱(Baraja española)이 기본이지만, 일반 카드(프랑스 덱)에서 8, 9, 10을 제외해도 동일하게 플레이할 수 있습니다.' },
176
+ { type: 'title', text: '실전 테이블 피스와의 실시간 점수 대조', level: 2 },
177
+ { type: 'paragraph', html: '메인 숫자로 총점을 보여주고 바로 아래 줄에서 아마라코(Amarracos, 5점)와 돌(Piedras, 1점) 단위로 자동 환산하여 테이블 칩과의 대조가 매우 쉽습니다.' },
178
+ { type: 'list', items: ['<strong>Piedra:</strong> 1점 단위 점수.', '<strong>Amarraco:</strong> 돌 5개에 해당하는 5점 단위 칩.', '<strong>Chico:</strong> 목표 점수 도달 시 획득하는 1세트.', '<strong>Vaca:</strong> 정해진 게임 수를 먼저 획득하여 거두는 최종 승리.'] },
179
+ { type: 'title', text: '게임 승리 확정 및 입력 실수 취소', level: 2 },
180
+ { type: 'paragraph', html: '목표 점수에 도달하면 게임 확정 버튼이 활성화됩니다. 점수를 잘못 입력한 경우 실행 취소 버튼으로 즉시 이전 상태로 복구할 수 있습니다.' },
181
+ { type: 'tip', title: '점수 오입력 시 실행 취소 기능 활용', html: '점수를 잘못 더했을 때 실행 취소 버튼을 누르면 기록을 어지럽히지 않고 바로 복구할 수 있습니다.' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { MusScoreboardLocaleContent, MusScoreboardUI } from '../entry';
4
+
5
+ const ui: MusScoreboardUI = {
6
+ onboarding: 'Vul de namen van de twee paren in, stel de tafelregels in en tik op de stenen zodra de punten geteld worden.',
7
+ pairOneLabel: 'Paar een',
8
+ pairTwoLabel: 'Paar twee',
9
+ pairOneDefault: 'Tafel Noord',
10
+ pairTwoDefault: 'Tafel Zuid',
11
+ targetPointsLabel: 'Punten per spel',
12
+ targetPointsHint: 'Kies het doel aantal punten per spel (30, 40 of 50 punten).',
13
+ gamesToWinLabel: 'Spellen om de vaca te winnen',
14
+ gamesToWinHint: 'Het eerste paar dat dit aantal behaalt, wint de wedstrijd.',
15
+ deckLabel: 'Kaartdeck aan tafel',
16
+ deckHint: 'Het Spaanse kaartdeck (Baraja española) van 40 kaarten is de traditionele keuze. Voor een Frans deck verwijdert u 8, 9 en 10.',
17
+ spanishDeck: 'Baraja española (Spaans deck)',
18
+ frenchDeck: 'Frans deck',
19
+ frenchDeckNotice: 'Vergeet niet om de 8, 9 en 10 uit het Franse deck te halen om met 40 kaarten te spelen. Boeren zijn Sotas, Vrouwen zijn Caballos en Heren zijn Reyes.',
20
+ pointsOption30: '30 punten',
21
+ pointsOption40: '40 punten',
22
+ pointsOption50: '50 punten',
23
+ gamesOption1: '1 spel',
24
+ gamesOption2: '2 spellen',
25
+ gamesOption3: '3 spellen',
26
+ startMatch: 'Open het scorebord',
27
+ matchSettings: 'Paren en regels instellen',
28
+ liveMatch: 'Lopende wedstrijd',
29
+ targetLabel: 'punten per spel',
30
+ gameLabel: 'spel',
31
+ gamePlural: 'spellen',
32
+ vacaLabel: 'spellen voor de winst',
33
+ scoreLabel: 'Huidige stenen',
34
+ handLabel: 'Kies welk paar de hand (Mano) heeft',
35
+ handSelected: 'heeft de hand (Mano).',
36
+ stonesLabel: 'Puntenteller',
37
+ stoneSingular: 'steen (piedra)',
38
+ stonePlural: 'stenen (piedras)',
39
+ amarracoSingular: 'amarraco',
40
+ amarracoPlural: 'amarracos',
41
+ pointsToGo: 'punten tot het doel',
42
+ addStone: 'steen',
43
+ addAmarraco: 'amarraco',
44
+ closeGame: 'Sluit spel',
45
+ closeGamePrompt: 'Bevestigen dat dit paar het spel heeft gewonnen en het volgende starten?',
46
+ confirmationTitle: 'Bevestig actie aan tafel',
47
+ confirmAction: 'Bevestigen',
48
+ cancelAction: 'Verder spelen',
49
+ undo: 'Ongedaan maken',
50
+ resetMatch: 'Wedstrijd resetten',
51
+ resetMatchPrompt: 'De huidige wedstrijd resetten en de scoregeschiedenis wissen?',
52
+ historyTitle: 'Laatste noteringen',
53
+ noHistory: 'Nog geen noteringen.',
54
+ matchReady: 'De tafel is gereed.',
55
+ closeGameHint: 'Een paar heeft het doel behaald. Bevestig de winnaar van het spel.',
56
+ waitingForScore: 'Blijf tellen. Resterende punten voor de koplopers:',
57
+ gameWon: 'Spel gesloten.',
58
+ vacaWon: 'Vaca gewonnen! Start een nieuwe wedstrijd wanneer de tafel klaar is.',
59
+ gameClosed: 'heeft het spel gesloten.',
60
+ pointsAdded: 'behaalde',
61
+ matchSaved: 'Score opgeslagen op dit apparaat.',
62
+ lastAction: 'Laatste actie',
63
+ settingsApplied: 'Nieuwe regels toegepast. De wedstrijd is gereset.',
64
+ pairNameRequired: 'Vul de namen van beide paren in voordat u het scorebord opent.',
65
+ visualScoreLabel: 'Mus scorebord voor aan tafel met stenen, amarracos en spellen',
66
+ };
67
+
68
+ const faq = [
69
+ {
70
+ question: 'Wat houdt dit online Mus scorebord bij?',
71
+ answer: 'Het houdt twee paren bij, stenen (losse punten), amarracos (blokken van 5 punten), gewonnen spellen (chicos), de vaca, wie de hand (Mano) heeft en de scoregeschiedenis.',
72
+ },
73
+ {
74
+ question: 'Waarom worden stenen en amarracos apart getoond?',
75
+ answer: 'Eén steen (Piedra) is 1 punt en één Amarraco staat gelijk aan 5 stenen. Dit maakt het vergelijken met fysieke fiches of bonen op tafel eenvoudig.',
76
+ },
77
+ {
78
+ question: 'Is spelen tot 30, 40 of 50 punten mogelijk?',
79
+ answer: 'Ja. U kunt vooraf 30, 40 of 50 punten per spel selecteren.',
80
+ },
81
+ {
82
+ question: 'Hoe sluit u een voltooid spel af?',
83
+ answer: 'Zodra een paar het doel bereikt, wordt de knop voor het sluiten actief. Na bevestiging wordt 1 spel toegekend en worden de stenen gereset.',
84
+ },
85
+ {
86
+ question: 'Blijven de gegevens bewaard bij het vernieuwen van de pagina?',
87
+ answer: 'Ja. De instellingen, namen, stenen en gewonnen spellen worden lokaal in uw browser opgeslagen.',
88
+ },
89
+ {
90
+ question: 'Dwingt dit scorebord specifieke lokale Mus regels af?',
91
+ answer: 'Nee. Mus kent verschillende regionale varianten. Dit digitale scorebord registreert de punten nauwkeurig en laat de gebaren aan de spelers over.',
92
+ },
93
+ {
94
+ question: 'Hoe past u een Frans deck aan voor Mus?',
95
+ answer: 'Verwijder 8, 9 en 10 uit het Franse deck zodat er 40 kaarten overblijven. Boeren zijn Sotas, Vrouwen zijn Caballos en Heren zijn Reyes.',
96
+ },
97
+ ];
98
+
99
+ const howTo = [
100
+ {
101
+ name: 'Voer de namen van de paren in',
102
+ text: 'Vul de namen van de twee paren in voor een duidelijke herkenning aan tafel.',
103
+ },
104
+ {
105
+ name: 'Stel het doel en de vaca in',
106
+ text: 'Kies 30, 40 of 50 punten per spel en het aantal spellen voor de vaca.',
107
+ },
108
+ {
109
+ name: 'Tel stenen en amarracos',
110
+ text: 'Tik op steen (+1) of amarraco (+5) na elke getelde ronde.',
111
+ },
112
+ {
113
+ name: 'Bevestig de winst van het spel',
114
+ text: 'Bevestig de winnaar zodra het doel bereikt is om het spel te registreren en de stenen te resetten.',
115
+ },
116
+ ];
117
+
118
+ const faqSchema: WithContext<FAQPage> = {
119
+ '@context': 'https://schema.org',
120
+ '@type': 'FAQPage',
121
+ mainEntity: faq.map((item) => ({
122
+ '@type': 'Question',
123
+ name: item.question,
124
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
125
+ })),
126
+ };
127
+
128
+ const appSchema: WithContext<SoftwareApplication> = {
129
+ '@context': 'https://schema.org',
130
+ '@type': 'SoftwareApplication',
131
+ name: 'Online Mus Scorebord',
132
+ operatingSystem: 'All',
133
+ applicationCategory: 'GameApplication',
134
+ description: 'Digitaal scorebord voor het traditionele Spaanse kaartspel Mus.',
135
+ };
136
+
137
+ const howToSchema: WithContext<HowTo> = {
138
+ '@context': 'https://schema.org',
139
+ '@type': 'HowTo',
140
+ name: 'Hoe houdt u de score bij in een Mus wedstrijd',
141
+ step: howTo.map((item) => ({
142
+ '@type': 'HowToStep',
143
+ name: item.name,
144
+ text: item.text,
145
+ })),
146
+ };
147
+
148
+ const schemas: WithContext<SoftwareApplication | FAQPage | HowTo>[] = [
149
+ faqSchema,
150
+ appSchema,
151
+ howToSchema,
152
+ ];
153
+
154
+ export const content: MusScoreboardLocaleContent = {
155
+ slug: 'online-mus-scorebord',
156
+ title: 'Online Mus Scorebord voor Live Wedstrijden',
157
+ description: 'Houd stenen, amarracos, spellen en vacas bij voor het Spaanse kaartspel Mus. Voor Spaanse en Franse decks met lokale opslag.',
158
+ ui,
159
+ seo: [
160
+ { type: 'title', text: 'Duidelijke en Snelle Scorebijhouding voor Uw Mus Tafel', level: 2 },
161
+ { type: 'paragraph', html: 'Mus is een traditioneel Spaans kaartspel vol dynamiek, emotie, tactiek en bluffen. Omdat punten na elke ronde (Grande, Chica, Pares, Juego of Punto) snel worden geteld en doorgegeven, voorkomt dit digitale scorebord misverstanden en discussies aan tafel.' },
162
+ { type: 'title', text: 'Stel het Doel in Vóór de Eerste Hand', level: 2 },
163
+ { type: 'paragraph', html: 'Hoewel 40 punten de standaard is in traditionele kringen, spelen sommige tafels liever tot 30 of 50 punten. Stel het doel in voordat u de kaarten deelt, zodat de teller en de knoppen voor het sluiten van de wedstrijd exact kloppen.' },
164
+ {
165
+ type: 'table',
166
+ headers: ['Instelling', 'Effect', 'Aanbevolen voor'],
167
+ rows: [
168
+ ['30 punten', 'Kort spel', 'Snelle wedstrijden, toernooien of lokale huisregels'],
169
+ ['40 punten', 'Standaard spel', 'Het klassieke traditionele formaat onder vrienden'],
170
+ ['50 punten', 'Lang spel', 'Wedstrijden met meer tactische ruimte en strategische diepte'],
171
+ ],
172
+ },
173
+ { type: 'tip', title: 'Bespreek de Regels Hardop', html: 'Spreek vooraf duidelijk met uw medespelers af of er met 8 Heren en 8 Azen wordt gespeeld (waarbij 3en als Heren en 2en als Azen gelden) en wie de fysieke fiches of bonen beheert.' },
174
+ { type: 'title', text: 'Aanpassing van Spaans en Frans Kaartdeck', level: 2 },
175
+ { type: 'paragraph', html: 'Het Spaanse deck van 40 kaarten (Oros, Copas, Espadas, Bastos) is het originele uitgangspunt voor Mus. Bij een Frans deck verwijdert u eenvoudig 8, 9 en 10. Boeren zijn Sotas, Vrouwen zijn Caballos en Heren zijn Reyes.' },
176
+ { type: 'title', text: 'Digitale Puntentelling Direct aan de Tafelrand', level: 2 },
177
+ { type: 'paragraph', html: 'Het grote getal toont de totale score op overzichtelijke wijze. De regel eronder vertaalt dit aantal automatisch naar amarracos (blokken van 5 punten) en losse stenen voor een snelle visuele controle.' },
178
+ { type: 'list', items: ['<strong>Steen (Piedra):</strong> 1 los punt in de telling van de wedstrijd.', '<strong>Amarraco:</strong> 1 fiche of blok gelijk aan 5 stenen.', '<strong>Spel (Chico):</strong> Gewonnen ronde bij het bereiken van het afgesproken doel.', '<strong>Vaca:</strong> Eindoverwinning van de wedstrijd na het behalen van het vereiste aantal spellen.'] },
179
+ { type: 'title', text: 'Spel Sluiten en Fouten Herstellen', level: 2 },
180
+ { type: 'paragraph', html: 'Wanneer het doel bereikt is, wordt de knop voor het sluiten van het spel actief met een duidelijke bevestiging. Mocht u per ongeluk een verkeerd punt invullen, dan kunt u dit direct ongedaan maken via de herstelknop.' },
181
+ { type: 'tip', title: 'Gebruik Ongedaan Maken bij Vergissingen', html: 'Als een punt per ongeluk aan het verkeerde paar wordt toegekend, gebruik dan direct Ongedaan maken om de score te herstellen zonder de geschiedenis te verstoren.' },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };