@jjlmoya/utils-creative 1.26.0 → 1.28.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 (133) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +2 -2
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +2 -2
  6. package/src/category/i18n/id.ts +2 -2
  7. package/src/category/i18n/it.ts +2 -2
  8. package/src/category/i18n/ja.ts +2 -2
  9. package/src/category/i18n/ko.ts +2 -2
  10. package/src/category/i18n/nl.ts +2 -2
  11. package/src/category/i18n/pl.ts +2 -2
  12. package/src/category/i18n/pt.ts +2 -2
  13. package/src/category/i18n/ru.ts +2 -2
  14. package/src/category/i18n/sv.ts +2 -2
  15. package/src/category/i18n/tr.ts +2 -2
  16. package/src/category/i18n/zh.ts +2 -2
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/env.d.ts +1 -1
  21. package/src/pages/index.astro +1 -1
  22. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  23. package/src/tests/category_seo_quality.test.ts +74 -0
  24. package/src/tests/faq_count.test.ts +1 -1
  25. package/src/tests/mocks/astro_mock.js +1 -1
  26. package/src/tests/no_h1_in_components.test.ts +1 -1
  27. package/src/tests/seo_parity.test.ts +2 -2
  28. package/src/tests/seo_translation_completeness.test.ts +75 -0
  29. package/src/tests/seo_wellformed_export.test.ts +65 -0
  30. package/src/tests/tool_validation.test.ts +17 -17
  31. package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
  32. package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
  33. package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
  34. package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
  35. package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
  36. package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
  37. package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
  38. package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
  39. package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
  40. package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
  41. package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
  42. package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
  43. package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
  44. package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
  45. package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
  46. package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
  47. package/src/tool/bead-pattern-generator/seo.astro +19 -19
  48. package/src/tool/dice-roller/bibliography.astro +8 -8
  49. package/src/tool/dice-roller/i18n/de.ts +134 -134
  50. package/src/tool/dice-roller/i18n/en.ts +134 -134
  51. package/src/tool/dice-roller/i18n/es.ts +125 -125
  52. package/src/tool/dice-roller/i18n/fr.ts +134 -134
  53. package/src/tool/dice-roller/i18n/id.ts +134 -134
  54. package/src/tool/dice-roller/i18n/it.ts +134 -134
  55. package/src/tool/dice-roller/i18n/ja.ts +134 -134
  56. package/src/tool/dice-roller/i18n/ko.ts +134 -134
  57. package/src/tool/dice-roller/i18n/nl.ts +134 -134
  58. package/src/tool/dice-roller/i18n/pl.ts +134 -134
  59. package/src/tool/dice-roller/i18n/pt.ts +134 -134
  60. package/src/tool/dice-roller/i18n/ru.ts +134 -134
  61. package/src/tool/dice-roller/i18n/sv.ts +134 -134
  62. package/src/tool/dice-roller/i18n/tr.ts +134 -134
  63. package/src/tool/dice-roller/i18n/zh.ts +134 -134
  64. package/src/tool/dice-roller/seo.astro +15 -15
  65. package/src/tool/excuse-generator/bibliography.astro +8 -8
  66. package/src/tool/excuse-generator/i18n/de.ts +120 -120
  67. package/src/tool/excuse-generator/i18n/en.ts +120 -120
  68. package/src/tool/excuse-generator/i18n/es.ts +118 -118
  69. package/src/tool/excuse-generator/i18n/fr.ts +120 -120
  70. package/src/tool/excuse-generator/i18n/id.ts +120 -120
  71. package/src/tool/excuse-generator/i18n/it.ts +120 -120
  72. package/src/tool/excuse-generator/i18n/ja.ts +120 -120
  73. package/src/tool/excuse-generator/i18n/ko.ts +120 -120
  74. package/src/tool/excuse-generator/i18n/nl.ts +120 -120
  75. package/src/tool/excuse-generator/i18n/pl.ts +120 -120
  76. package/src/tool/excuse-generator/i18n/pt.ts +120 -120
  77. package/src/tool/excuse-generator/i18n/ru.ts +120 -120
  78. package/src/tool/excuse-generator/i18n/sv.ts +120 -120
  79. package/src/tool/excuse-generator/i18n/tr.ts +120 -120
  80. package/src/tool/excuse-generator/i18n/zh.ts +120 -120
  81. package/src/tool/excuse-generator/seo.astro +15 -15
  82. package/src/tool/fortune-cookie/bibliography.astro +8 -8
  83. package/src/tool/fortune-cookie/i18n/de.ts +124 -124
  84. package/src/tool/fortune-cookie/i18n/en.ts +124 -124
  85. package/src/tool/fortune-cookie/i18n/es.ts +125 -125
  86. package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
  87. package/src/tool/fortune-cookie/i18n/id.ts +124 -124
  88. package/src/tool/fortune-cookie/i18n/it.ts +124 -124
  89. package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
  90. package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
  91. package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
  92. package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
  93. package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
  94. package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
  95. package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
  96. package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
  97. package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
  98. package/src/tool/fortune-cookie/seo.astro +15 -15
  99. package/src/tool/synesthesia-painter/bibliography.astro +8 -8
  100. package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
  101. package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
  102. package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
  103. package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
  104. package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
  105. package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
  106. package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
  107. package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
  108. package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
  109. package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
  110. package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
  111. package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
  112. package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
  113. package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
  114. package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
  115. package/src/tool/synesthesia-painter/seo.astro +15 -15
  116. package/src/tool/zalgo-generator/bibliography.astro +8 -8
  117. package/src/tool/zalgo-generator/i18n/de.ts +109 -109
  118. package/src/tool/zalgo-generator/i18n/en.ts +109 -109
  119. package/src/tool/zalgo-generator/i18n/es.ts +109 -109
  120. package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
  121. package/src/tool/zalgo-generator/i18n/id.ts +109 -109
  122. package/src/tool/zalgo-generator/i18n/it.ts +109 -109
  123. package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
  124. package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
  125. package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
  126. package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
  127. package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
  128. package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
  129. package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
  130. package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
  131. package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
  132. package/src/tool/zalgo-generator/seo.astro +15 -15
  133. package/src/types.ts +1 -1
@@ -1,111 +1,111 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import { bibliography } from '../bibliography';
3
- import type { BeadPatternGeneratorLocaleContent } from '../index';
4
-
5
- const slug = 'bead-pattern-generator';
6
- const title = '串珠图案生成器';
7
- const description = '根据您的照片生成适用于 Miyuki(米珠)或 Hama(拼拼豆豆)的像素艺术和串珠方案。包含颜色量化算法、隧道视野模式及 ZIP 导出功能。';
8
-
9
- const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
- { question: '图案生成中的\"颜色量化\"是什么?', answer: '这是将照片中成千上万种颜色减少到仅有的几种的过程,这些颜色对应于实际可用的珠子颜色(如 Miyuki 或 Hama)。我们使用智能算法,在保持视觉相似度的前提下尽可能减少调色板的颜色数量。' },
11
- { question: '我可以将这个图案用于十字绣吗?', answer: '可以。生成器产生的网格图室与十字绣完美兼容。您只需选择与您的底布(如 Aida 14、18 等)匹配的网格大小。' },
12
- { question: 'Miyuki 米珠和 Hama 豆豆之间有什么区别?', answer: 'Miyuki Delica 米珠是用于珠宝制作的极小且精密的高品质玻璃珠。Hama 豆豆是塑料材质,通过熨斗加热融合。我们的工具允许您调整纵横比,确保图案不会因所选材质而变形。' },
13
- { question: '抖动(Dithering)算法是如何工作的?', answer: '抖动算法通过在稀疏图案中混合不同颜色的像素来创造更多颜色的错觉。即使在珠子调色板有限的情况下,它也能帮助颜色渐变看起来更平滑。' },
14
- ];
15
-
16
- const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
- { name: '上传清晰的图片', text: '选择对比度高、细节较少的照片,这样生成的图案会更容易制作。' },
18
- { name: '调整网格大小', text: '定义作品最终的宽度和高度所需的珠子数量。珠子越多,细节越丰富,但也越具挑战。' },
19
- { name: '优化调色板', text: '减少颜色数量,直到它们与您手工工具包中现有的珠子颜色匹配。' },
20
- { name: '导出引导方案', text: '生成带有颜色代码的最终图案,在您将珠子组装到板上或穿线时作为参考指南。' },
21
- ];
22
-
23
- const faqSchema: WithContext<FAQPage> = {
24
- '@context': 'https://schema.org',
25
- '@type': 'FAQPage',
26
- mainEntity: faq.map((item) => ({
27
- '@type': 'Question',
28
- name: item.question,
29
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
- })),
31
- };
32
-
33
- const howToSchema: WithContext<HowTo> = {
34
- '@context': 'https://schema.org',
35
- '@type': 'HowTo',
36
- name: title,
37
- description,
38
- step: howTo.map((step) => ({
39
- '@type': 'HowToStep',
40
- name: step.name,
41
- text: step.text,
42
- })),
43
- };
44
-
45
- const appSchema: WithContext<SoftwareApplication> = {
46
- '@context': 'https://schema.org',
47
- '@type': 'SoftwareApplication',
48
- name: title,
49
- description,
50
- applicationCategory: 'UtilitiesApplication',
51
- operatingSystem: 'Web',
52
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
- inLanguage: 'zh',
54
- };
55
-
56
- export const content: BeadPatternGeneratorLocaleContent = {
57
- slug,
58
- title,
59
- description,
60
- faqTitle: '常见问题解答',
61
- ui: {
62
- title: '图案实验室',
63
- subtitle: '指尖上的色彩工程',
64
- description: '从照片到串珠方案。',
65
- gridSizeLabel: '尺寸(宽度)',
66
- colorCountLabel: '颜色数量',
67
- optionsLabel: '选项',
68
- rulersLabel: '标尺',
69
- symbolsTooltip: '惊喜图案',
70
- symbolsLabel: '符号',
71
- downloadBtn: '下载',
72
- uploadTitle: '上传您的构思',
73
- uploadSubtitle: '开启数字魔法',
74
- paletteTitle: '色彩 DNA',
75
- reuploadBtn: '更换图片',
76
- tunnelVisionTitle: '隧道视野',
77
- tunnelVisionSubtitle: '逐行辅助,助您精确组装。',
78
- uploadLabel: '上传照片',
79
- pixelateBtn: '生成图案',
80
- faqTitle: '常见问题',
81
- bibliographyTitle: '参考资料'
82
- },
83
- seo: [
84
- { type: 'title', text: '数字炼金术:将像素转化为触手可及的艺术', level: 2 },
85
- { type: 'paragraph', html: '欢迎来到<strong>终极图案工作室</strong>。这是一个专为像素艺术架构师、Miyuki 大师和十字绣远见者设计的<em>色彩智能引擎</em>。它是连接数字世界与手工艺术的桥梁。' },
86
- { type: 'card', icon: 'mdi:grid', title: '智能网格', html: '我们的<strong>空间下采样</strong>算法不仅是单纯地\"缩小\"图片。它会分析视觉结构,将复杂的像素群映射到单个单元格中,像专家插画师一样保留轮廓和边缘的完整性。' },
87
- { type: 'card', icon: 'mdi:palette', title: 'K Means 颜色量化', html: '我们采用了一种 <strong>K-Means 聚类</strong>算法的变体,通过数学计算找出图像的\"主导\"色调。即便在只有 12、24 或 32 色的极简调色板下,也能实现惊人的视觉忠实度。' },
88
- { type: 'title', text: '大师三部曲', level: 3 },
89
- { type: 'card', icon: 'mdi:image-search', title: '完美选择', html: '寻找<strong>高对比度</strong>、极具戏剧性的光影以及标志性形状。背景简单的肖像、Logo 和矢量艺术都能获得极佳的转换效果。' },
90
- { type: 'card', icon: 'mdi:ruler', title: '尺寸校准', html: '<strong>Miyuki Delica:</strong> 50 颗珠子 ≈ 8 厘米 · <strong>Hama Midi:</strong> 50 颗珠子 ≈ 25 厘米 · <strong>十字绣:</strong> 1 个单元格 = 1 针。' },
91
- { type: 'card', icon: 'mdi:eye-check', title: '禅式执行(隧道视野模式)', html: '我们的<strong>隧道视野</strong>系统充当您的个人助手,消除视觉干扰,精准高亮显示当前操作行。为您提供绝对的专注。' },
92
- { type: 'title', text: '无限画布', level: 3 },
93
- { type: 'list', items: [
94
- '<strong>纺织珠宝:</strong> 用于织布机和几何手链的精密图案。',
95
- '<strong>十字绣:</strong> 现代风格方案,可逐个像素进行绣制。',
96
- '<strong>马赛克:</strong> 使用简化的陶瓷细工制作的大型壁画。',
97
- '<strong>复古游戏:</strong> 数秒内即可生成地道的 8 位资产和精灵图。',
98
- ]},
99
- { type: 'stats', items: [
100
- { value: '10-100', label: '珠子宽度范围', icon: 'mdi:arrow-expand-horizontal' },
101
- { value: '2-32', label: '调色板槽位', icon: 'mdi:palette-swatch' },
102
- { value: 'K-Means', label: '量化算法', icon: 'mdi:function-variant' },
103
- { value: 'ZIP', label: '导出格式(图案 + 引导)', icon: 'mdi:zip-box' },
104
- ], columns: 4 },
105
- { type: 'paragraph', html: '在转瞬即逝的屏幕时代,亲手创造实体作品是一种革命性的行为。本工具不致力于取代艺术,而是旨在<strong>赋能工匠</strong>。我们为您提供计算精度,助您的双手打造持久的传承。' },
106
- ],
107
- faq,
108
- bibliography,
109
- howTo,
110
- schemas: [faqSchema as any, howToSchema as any, appSchema],
111
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { BeadPatternGeneratorLocaleContent } from '../index';
4
+
5
+ const slug = 'bead-pattern-generator';
6
+ const title = '串珠图案生成器';
7
+ const description = '根据您的照片生成适用于 Miyuki(米珠)或 Hama(拼拼豆豆)的像素艺术和串珠方案。包含颜色量化算法、隧道视野模式及 ZIP 导出功能。';
8
+
9
+ const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
+ { question: '图案生成中的\"颜色量化\"是什么?', answer: '这是将照片中成千上万种颜色减少到仅有的几种的过程,这些颜色对应于实际可用的珠子颜色(如 Miyuki 或 Hama)。我们使用智能算法,在保持视觉相似度的前提下尽可能减少调色板的颜色数量。' },
11
+ { question: '我可以将这个图案用于十字绣吗?', answer: '可以。生成器产生的网格图室与十字绣完美兼容。您只需选择与您的底布(如 Aida 14、18 等)匹配的网格大小。' },
12
+ { question: 'Miyuki 米珠和 Hama 豆豆之间有什么区别?', answer: 'Miyuki Delica 米珠是用于珠宝制作的极小且精密的高品质玻璃珠。Hama 豆豆是塑料材质,通过熨斗加热融合。我们的工具允许您调整纵横比,确保图案不会因所选材质而变形。' },
13
+ { question: '抖动(Dithering)算法是如何工作的?', answer: '抖动算法通过在稀疏图案中混合不同颜色的像素来创造更多颜色的错觉。即使在珠子调色板有限的情况下,它也能帮助颜色渐变看起来更平滑。' },
14
+ ];
15
+
16
+ const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
+ { name: '上传清晰的图片', text: '选择对比度高、细节较少的照片,这样生成的图案会更容易制作。' },
18
+ { name: '调整网格大小', text: '定义作品最终的宽度和高度所需的珠子数量。珠子越多,细节越丰富,但也越具挑战。' },
19
+ { name: '优化调色板', text: '减少颜色数量,直到它们与您手工工具包中现有的珠子颜色匹配。' },
20
+ { name: '导出引导方案', text: '生成带有颜色代码的最终图案,在您将珠子组装到板上或穿线时作为参考指南。' },
21
+ ];
22
+
23
+ const faqSchema: WithContext<FAQPage> = {
24
+ '@context': 'https://schema.org',
25
+ '@type': 'FAQPage',
26
+ mainEntity: faq.map((item) => ({
27
+ '@type': 'Question',
28
+ name: item.question,
29
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
+ })),
31
+ };
32
+
33
+ const howToSchema: WithContext<HowTo> = {
34
+ '@context': 'https://schema.org',
35
+ '@type': 'HowTo',
36
+ name: title,
37
+ description,
38
+ step: howTo.map((step) => ({
39
+ '@type': 'HowToStep',
40
+ name: step.name,
41
+ text: step.text,
42
+ })),
43
+ };
44
+
45
+ const appSchema: WithContext<SoftwareApplication> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'SoftwareApplication',
48
+ name: title,
49
+ description,
50
+ applicationCategory: 'UtilitiesApplication',
51
+ operatingSystem: 'Web',
52
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
+ inLanguage: 'zh',
54
+ };
55
+
56
+ export const content: BeadPatternGeneratorLocaleContent = {
57
+ slug,
58
+ title,
59
+ description,
60
+ faqTitle: '常见问题解答',
61
+ ui: {
62
+ title: '图案实验室',
63
+ subtitle: '指尖上的色彩工程',
64
+ description: '从照片到串珠方案。',
65
+ gridSizeLabel: '尺寸(宽度)',
66
+ colorCountLabel: '颜色数量',
67
+ optionsLabel: '选项',
68
+ rulersLabel: '标尺',
69
+ symbolsTooltip: '惊喜图案',
70
+ symbolsLabel: '符号',
71
+ downloadBtn: '下载',
72
+ uploadTitle: '上传您的构思',
73
+ uploadSubtitle: '开启数字魔法',
74
+ paletteTitle: '色彩 DNA',
75
+ reuploadBtn: '更换图片',
76
+ tunnelVisionTitle: '隧道视野',
77
+ tunnelVisionSubtitle: '逐行辅助,助您精确组装。',
78
+ uploadLabel: '上传照片',
79
+ pixelateBtn: '生成图案',
80
+ faqTitle: '常见问题',
81
+ bibliographyTitle: '参考资料'
82
+ },
83
+ seo: [
84
+ { type: 'title', text: '数字炼金术:将像素转化为触手可及的艺术', level: 2 },
85
+ { type: 'paragraph', html: '欢迎来到<strong>终极图案工作室</strong>。这是一个专为像素艺术架构师、Miyuki 大师和十字绣远见者设计的<em>色彩智能引擎</em>。它是连接数字世界与手工艺术的桥梁。' },
86
+ { type: 'card', icon: 'mdi:grid', title: '智能网格', html: '我们的<strong>空间下采样</strong>算法不仅是单纯地\"缩小\"图片。它会分析视觉结构,将复杂的像素群映射到单个单元格中,像专家插画师一样保留轮廓和边缘的完整性。' },
87
+ { type: 'card', icon: 'mdi:palette', title: 'K Means 颜色量化', html: '我们采用了一种 <strong>K-Means 聚类</strong>算法的变体,通过数学计算找出图像的\"主导\"色调。即便在只有 12、24 或 32 色的极简调色板下,也能实现惊人的视觉忠实度。' },
88
+ { type: 'title', text: '大师三部曲', level: 3 },
89
+ { type: 'card', icon: 'mdi:image-search', title: '完美选择', html: '寻找<strong>高对比度</strong>、极具戏剧性的光影以及标志性形状。背景简单的肖像、Logo 和矢量艺术都能获得极佳的转换效果。' },
90
+ { type: 'card', icon: 'mdi:ruler', title: '尺寸校准', html: '<strong>Miyuki Delica:</strong> 50 颗珠子 ≈ 8 厘米 · <strong>Hama Midi:</strong> 50 颗珠子 ≈ 25 厘米 · <strong>十字绣:</strong> 1 个单元格 = 1 针。' },
91
+ { type: 'card', icon: 'mdi:eye-check', title: '禅式执行(隧道视野模式)', html: '我们的<strong>隧道视野</strong>系统充当您的个人助手,消除视觉干扰,精准高亮显示当前操作行。为您提供绝对的专注。' },
92
+ { type: 'title', text: '无限画布', level: 3 },
93
+ { type: 'list', items: [
94
+ '<strong>纺织珠宝:</strong> 用于织布机和几何手链的精密图案。',
95
+ '<strong>十字绣:</strong> 现代风格方案,可逐个像素进行绣制。',
96
+ '<strong>马赛克:</strong> 使用简化的陶瓷细工制作的大型壁画。',
97
+ '<strong>复古游戏:</strong> 数秒内即可生成地道的 8 位资产和精灵图。',
98
+ ]},
99
+ { type: 'stats', items: [
100
+ { value: '10-100', label: '珠子宽度范围', icon: 'mdi:arrow-expand-horizontal' },
101
+ { value: '2-32', label: '调色板槽位', icon: 'mdi:palette-swatch' },
102
+ { value: 'K-Means', label: '量化算法', icon: 'mdi:function-variant' },
103
+ { value: 'ZIP', label: '导出格式(图案 + 引导)', icon: 'mdi:zip-box' },
104
+ ], columns: 4 },
105
+ { type: 'paragraph', html: '在转瞬即逝的屏幕时代,亲手创造实体作品是一种革命性的行为。本工具不致力于取代艺术,而是旨在<strong>赋能工匠</strong>。我们为您提供计算精度,助您的双手打造持久的传承。' },
106
+ ],
107
+ faq,
108
+ bibliography,
109
+ howTo,
110
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
111
+ };
@@ -1,19 +1,19 @@
1
- ---
2
- import { SEORenderer } from "@jjlmoya/utils-shared";
3
- import { beadPatternGenerator } from "./index";
4
- import type { KnownLocale } from "../../types";
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = "es" } = Astro.props;
11
- const content = await beadPatternGenerator.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {
16
- content.seo?.length > 0 && (
17
- <SEORenderer content={{ locale, sections: content.seo }} />
18
- )
19
- }
1
+ ---
2
+ import { SEORenderer } from "@jjlmoya/utils-shared";
3
+ import { beadPatternGenerator } from "./index";
4
+ import type { KnownLocale } from "../../types";
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = "es" } = Astro.props;
11
+ const content = await beadPatternGenerator.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {
16
+ content.seo?.length > 0 && (
17
+ <SEORenderer content={{ locale, sections: content.seo }} />
18
+ )
19
+ }
@@ -1,8 +1,8 @@
1
- ---
2
- import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { bibliography } from './bibliography';
4
-
5
- if (!bibliography || bibliography.length === 0) return null;
6
- ---
7
-
8
- <SharedBibliography links={bibliography} />
1
+ ---
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
+ import { bibliography } from './bibliography';
4
+
5
+ if (!bibliography || bibliography.length === 0) return null;
6
+ ---
7
+
8
+ <SharedBibliography links={bibliography} />
@@ -1,134 +1,134 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import { bibliography } from '../bibliography';
3
- import type { DiceRollerLocaleContent } from '../index';
4
-
5
- const slug = 'wuerfel-simulator';
6
- const title = 'Würfel Simulator';
7
- const description = 'Ein kompletter Würfelsimulator für Ihre RPGs und Brettspiele. Würfeln Sie d4, d6, d8, d10, d12, d20 und d100 mit Modifikatoren und Historie.';
8
-
9
- const faq: DiceRollerLocaleContent['faq'] = [
10
- {
11
- question: 'Wie kann ich einen Wurf mit Vorteil (D&D) simulieren?',
12
- answer: 'Fügen Sie zwei d20-Würfel zum Beutel hinzu, indem Sie zweimal auf die d20-Schaltfläche klicken. Achten Sie beim Würfeln auf die beiden Einzelergebnisse und behalten Sie das höhere. Die angezeigte Summe ist der Gesamtwert, aber Sie können jeden Würfel einzeln in der Ergebnisaufschlüsselung sehen.',
13
- },
14
- {
15
- question: 'Was bedeuten die grünen oder roten Farben bei den Ergebnissen?',
16
- answer: 'Grüne Ergebnisse zeigen an, dass der Würfel seinen maximal möglichen Wert gewürfelt hat (ein "Krit"). Rote Ergebnisse zeigen den Minimalwert an (eine "1", das schlechtestmögliche Ergebnis). So lassen sich kritische Erfolge und Patzer auf einen Blick erkennen.',
17
- },
18
- {
19
- question: 'Kann ich mehrere Würfel desselben Typs hinzufügen?',
20
- answer: 'Ja. Jeder Klick auf einen Würfel fügt ihn dem Beutel hinzu. Wenn Sie dreimal auf d6 klicken, zeigt der Beutel "3d6" an. Um die Anzahl zu verringern, klicken Sie auf die Schaltfläche "−", die neben jeder Würfelgruppe im Beutel erscheint.',
21
- },
22
- {
23
- question: 'Sind digitale Würfel so zufällig wie physische?',
24
- answer: 'Statistisch gesehen, ja. Moderne JavaScript-Engines verwenden Pseudozufallsalgorithmen (xorshift128+) mit einer sehr hochwertigen Gleichverteilung. Ein echter physischer Würfel kann kleine Herstellungsfehler aufweisen, die die Ergebnisse beeinflussen; der digitale Würfel hat dieses Problem nicht.',
25
- },
26
- {
27
- question: 'Was ist der d100 und wie wird er verwendet?',
28
- answer: 'Der d100 (oder d%) erzeugt eine Zahl von 1 bis 100 und wird in prozentualen Spielsystemen wie Cthulhu oder Warhammer Fantasy Roleplay verwendet. Er stellt die "direkte Wahrscheinlichkeit" dar: Wenn Ihr Fertigkeitswert in Schleichen 65 % beträgt, müssen Sie eine 65 oder weniger würfeln, um Erfolg zu haben.',
29
- },
30
- ];
31
-
32
- const howTo: DiceRollerLocaleContent['howTo'] = [
33
- { name: 'Würfelpool zusammenstellen', text: 'Klicken Sie auf die Würfelschaltflächen (d4, d6, d8...), um sie Ihrem Pool hinzuzufügen. Jeder Klick fügt einen Würfel des gewählten Typs hinzu. Sie können verschiedene Typen in demselben Wurf kombinieren.' },
34
- { name: 'Modifikator anpassen', text: 'Verwenden Sie die Schaltflächen "+" und "−" neben dem Modifikator, um Boni oder Abzüge anzuwenden (wie den Attributsmodifikator in D&D). Der Modifikator wird automatisch zur Gesamtsumme addiert.' },
35
- { name: 'Würfeln', text: 'Drücken Sie die Schaltfläche "Würfeln". Das rechte Feld zeigt die Gesamtsumme und die Aufschlüsselung der einzelnen Würfel, wobei Kritische Erfolge (Maximum) grün und Patzer (Minimum) rot markiert sind.' },
36
- { name: 'Historie prüfen', text: 'Jeder Wurf wird in der Historie mit der verwendeten Würfelformel, dem Gesamtergebnis und der genauen Zeit aufgezeichnet. Sie können die Historie mit der entsprechenden Schaltfläche löschen.' },
37
- ];
38
-
39
- const faqSchema: WithContext<FAQPage> = {
40
- '@context': 'https://schema.org',
41
- '@type': 'FAQPage',
42
- mainEntity: faq.map((item) => ({
43
- '@type': 'Question',
44
- name: item.question,
45
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
46
- })),
47
- };
48
-
49
- const howToSchema: WithContext<HowTo> = {
50
- '@context': 'https://schema.org',
51
- '@type': 'HowTo',
52
- name: title,
53
- description,
54
- step: howTo.map((step) => ({
55
- '@type': 'HowToStep',
56
- name: step.name,
57
- text: step.text,
58
- })),
59
- };
60
-
61
- const appSchema: WithContext<SoftwareApplication> = {
62
- '@context': 'https://schema.org',
63
- '@type': 'SoftwareApplication',
64
- name: title,
65
- description,
66
- applicationCategory: 'UtilitiesApplication',
67
- operatingSystem: 'Web',
68
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
69
- inLanguage: 'de',
70
- };
71
-
72
- export const content: DiceRollerLocaleContent = {
73
- slug,
74
- title,
75
- description,
76
- faqTitle: 'Häufig gestellte Fragen',
77
- ui: {
78
- title: 'Würfel Simulator',
79
- description: 'Möge das Glück mit dir sein.',
80
- rollBtn: 'Würfeln',
81
- totalLabel: 'Summe',
82
- historyLabel: 'Historie',
83
- clearHistoryBtn: 'Historie löschen',
84
- faqTitle: 'FAQ',
85
- bibliographyTitle: 'Referenzen',
86
- addDiceLabel: 'Würfel zum Beutel hinzufügen',
87
- bagLabel: 'Würfelbeutel',
88
- emptyBagBtn: 'Leeren',
89
- emptyBagText: 'Klicke auf die Würfel, um sie hinzuzufügen',
90
- modifierLabel: 'Modifikator',
91
- rollManyLabel: '$COUNT Würfel werfen',
92
- rollOneLabel: '$COUNT Würfel werfen',
93
- preRollText: 'Würfel hinzufügen und werfen',
94
- emptyHistoryText: 'Wurfhistorie wird hier angezeigt'
95
- },
96
- seo: [
97
- { type: 'title', text: 'Die Kunst des Zufalls: Geschichte und Mathematik der Würfel', level: 2 },
98
- { type: 'paragraph', html: 'Würfel gehören zu den ältesten Zufallsgeneratoren der Menschheit. <strong>Astragali</strong> - Sprungbeine von Schafen und Ziegen - wurden bereits 5000 v. Chr. in Mesopotamien und Ägypten als primitive vierseitige Würfel verwendet. Die Entwicklung vom geschnitzten Knochen bis hin zu modernen Ikosaedern aus Epoxidharz ist nicht nur ästhetischer Natur: Es ist eine Reise durch die Wahrscheinlichkeitstheorie und das Design von Spielmechaniken.' },
99
- { type: 'title', text: 'Die Standard Würfelfamilie', level: 3 },
100
- { type: 'paragraph', html: 'Das am weitesten verbreitete Würfelset in Rollenspielen - bekann gemacht durch <strong>Dungeons &amp; Dragons</strong> im Jahr 1974 - besteht aus den fünf platonischen Körpern plus zwei zusätzlichen Formen: d4 (Tetraeder), d6 (Würfel), d8 (Oktaeder), d10 (Pentagonales Trapezoeder), d12 (Dodekaeder), d20 (Ikosaeder) und d100 (Prozentwürfel). Jedes Polyeder garantiert eine Gleichverteilung: Alle Flächen haben genau die gleiche Wahrscheinlichkeit, gewürfelt zu werden.' },
101
- { type: 'list', items: [
102
- '<strong>d4 - Tetraeder:</strong> Am gefährlichsten, wenn man barfuß darauf tritt. Vier dreieckige Flächen, 25 % Wahrscheinlichkeit pro Fläche. Häufig verwendet für Dolchschaden oder Zaubersprüche auf niedriger Stufe.',
103
- '<strong>d6 - Würfel:</strong> Der universellste Würfel. In allen Brettspielen seit dem ägyptischen Senet vorhanden. Seine kubische Geometrie garantiert perfekte Gleichverteilung.',
104
- '<strong>d8 - Oktaeder:</strong> Der Würfel für den Speer oder die Streitaxt. Acht gleichseitige dreieckige Flächen. 12,5 % Wahrscheinlichkeit pro Fläche.',
105
- '<strong>d10 - Pentagonales Trapezoeder:</strong> Der einzige nicht-platonische Körper im Standardset. Zwei gegenüberliegende Flächen pro "Ecke". Unverzichtbar für den d100 (zwei kombinierte d10).',
106
- '<strong>d12 - Dodekaeder:</strong> Der Würfel des Barbaren. Zwölf fünfeckige Flächen. In vielen Systemen unterschätzt, Protagonist beim D&D 5e Barbaren.',
107
- '<strong>d20 - Ikosaeder:</strong> Der König des Rollenspiels. Zwanzig dreieckige Flächen. Protagonist des d20-Systems: entscheidet über Erfolg oder Misserfolg fast aller Aktionen.',
108
- '<strong>d100 - Prozentwürfel:</strong> Zwei kombinierte d10 (Zehner + Einer). Definiert feine Wahrscheinlichkeiten in Systemen wie Cthulhu oder Warhammer Fantasy.',
109
- ]},
110
- { type: 'stats', items: [
111
- { value: '5000 v. Chr.', label: 'Erste Würfel (Astragali)', icon: 'mdi:history' },
112
- { value: '1974', label: 'D&D machte das Set bekannt', icon: 'mdi:sword' },
113
- { value: '7 Typen', label: 'Standard RPG Würfel', icon: 'mdi:dice-multiple' },
114
- { value: '2¹²⁸', label: 'JS Zufallsperiode', icon: 'mdi:function-variant' },
115
- ], columns: 4 },
116
- { type: 'title', text: 'Wahrscheinlichkeiten und Verteilungskurven', level: 3 },
117
- { type: 'paragraph', html: 'Wenn Sie einen einzelnen Würfel werfen, erhalten Sie eine <strong>diskrete Gleichverteilung</strong>: jedes Ergebnis hat genau die gleiche Wahrscheinlichkeit (1/n). Sobald Sie jedoch mehrere Würfel kombinieren, verwandelt die mathematische Magie diese flache Kurve in eine <strong>annähernde Normalverteilung</strong>. Deshalb ist 2d6 nicht gleich 1d12: Bei zwei sechsseitigen Würfeln beträgt die Wahrscheinlichkeit, eine 7 zu würfeln, 6/36 ≈ 16,7 %, während die Extreme (2 und 12) nur in 2,8 % der Fälle auftreten.' },
118
- { type: 'tip', title: 'Vorteil und Nachteil (D&D 5e)', html: 'Die <strong>Vorteils</strong>-Mechanik besteht darin, 2d20 zu würfeln und das höhere Ergebnis zu behalten. Mathematisch erhöht dies den Durchschnitt von 10,5 auf etwa 13,8. <strong>Nachteil</strong> bewirkt das Gegenteil: Nehmen Sie den niedrigeren Wert, wodurch der Durchschnitt auf etwa 7,2 sinkt. Unser Simulator ermöglicht es Ihnen, dies zu simulieren, indem Sie zwei d20 zum Beutel hinzufügen und die Einzelergebnisse vergleichen.' },
119
- { type: 'title', text: 'Modifikatoren: Die Brücke zwischen Würfeln und Charakter', level: 3 },
120
- { type: 'paragraph', html: 'In den meisten Rollenspielsystemen agiert der Würfel nicht allein: Ein <strong>Modifikator</strong>, der die Fähigkeiten des Charakters darstellt, wird addiert oder subtrahiert. In D&D 5e bedeutet ein Stärkemodifikator von +5, dass Sie 1d20 würfeln, 5 addieren und das Ergebnis gegen die Rüstungsklasse des Gegners prüfen. Unser Simulator enthält eine Modifikatorsteuerung, um diese Mechaniken originalgetreu abzubilden.' },
121
- { type: 'tip', title: 'Standard Würfel Notation', html: 'Die <strong>XdY+Z</strong>-Notation ist der De-facto-Standard in Rollenspielen: X Würfel mit Y Flächen mit Modifikator Z. "3d6+2" bedeutet, drei sechsseitige Würfel zu werfen und 2 zur Summe zu addieren. Unser Werkzeug verwendet diese Notation in der Historie, damit Sie Ihre Würfe leicht teilen oder aufzeichnen können.' },
122
- { type: 'glossary', items: [
123
- { term: 'Kritischer Treffer', definition: 'Ein Wurf des maximalen Wertes auf einem Würfel (z. B. eine 20 auf einem d20). Löst in den meisten RPG-Systemen normalerweise spezielle Bonuseffekte aus.' },
124
- { term: 'Patzer / Nat 1', definition: 'Das Würfeln des Minimalwerts (1) auf einem Würfel. Führt oft zu einem dramatischen Misserfolg oder einer negativen Konsequenz.' },
125
- { term: 'Würfelpool', definition: 'Eine Sammlung von Würfeln, die gleichzeitig geworfen werden. Der Pool in unserem Werkzeug zeigt jeden Würfeltyp gruppiert nach Anzahl an (z. B. 3d6 + 2d8).' },
126
- { term: 'Modifikator', definition: 'Eine feste Zahl, die zu einem Würfelergebnis addiert oder davon subtrahiert wird und die Fertigkeit, den Attributsbonus oder einen situationsbedingten Abzug eines Charakters darstellt.' },
127
- { term: 'Prozentwurf', definition: 'Ein Wurf mit zwei d10, um ein Ergebnis von 1-100 zu erhalten, verwendet in fertigkeitsbasierten Systemen, in denen Fähigkeiten als Prozentsätze gemessen werden.' },
128
- ]},
129
- ],
130
- faq,
131
- bibliography,
132
- howTo,
133
- schemas: [faqSchema as any, howToSchema as any, appSchema],
134
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { DiceRollerLocaleContent } from '../index';
4
+
5
+ const slug = 'wuerfel-simulator';
6
+ const title = 'Würfel Simulator';
7
+ const description = 'Ein kompletter Würfelsimulator für Ihre RPGs und Brettspiele. Würfeln Sie d4, d6, d8, d10, d12, d20 und d100 mit Modifikatoren und Historie.';
8
+
9
+ const faq: DiceRollerLocaleContent['faq'] = [
10
+ {
11
+ question: 'Wie kann ich einen Wurf mit Vorteil (D&D) simulieren?',
12
+ answer: 'Fügen Sie zwei d20-Würfel zum Beutel hinzu, indem Sie zweimal auf die d20-Schaltfläche klicken. Achten Sie beim Würfeln auf die beiden Einzelergebnisse und behalten Sie das höhere. Die angezeigte Summe ist der Gesamtwert, aber Sie können jeden Würfel einzeln in der Ergebnisaufschlüsselung sehen.',
13
+ },
14
+ {
15
+ question: 'Was bedeuten die grünen oder roten Farben bei den Ergebnissen?',
16
+ answer: 'Grüne Ergebnisse zeigen an, dass der Würfel seinen maximal möglichen Wert gewürfelt hat (ein "Krit"). Rote Ergebnisse zeigen den Minimalwert an (eine "1", das schlechtestmögliche Ergebnis). So lassen sich kritische Erfolge und Patzer auf einen Blick erkennen.',
17
+ },
18
+ {
19
+ question: 'Kann ich mehrere Würfel desselben Typs hinzufügen?',
20
+ answer: 'Ja. Jeder Klick auf einen Würfel fügt ihn dem Beutel hinzu. Wenn Sie dreimal auf d6 klicken, zeigt der Beutel "3d6" an. Um die Anzahl zu verringern, klicken Sie auf die Schaltfläche "−", die neben jeder Würfelgruppe im Beutel erscheint.',
21
+ },
22
+ {
23
+ question: 'Sind digitale Würfel so zufällig wie physische?',
24
+ answer: 'Statistisch gesehen, ja. Moderne JavaScript-Engines verwenden Pseudozufallsalgorithmen (xorshift128+) mit einer sehr hochwertigen Gleichverteilung. Ein echter physischer Würfel kann kleine Herstellungsfehler aufweisen, die die Ergebnisse beeinflussen; der digitale Würfel hat dieses Problem nicht.',
25
+ },
26
+ {
27
+ question: 'Was ist der d100 und wie wird er verwendet?',
28
+ answer: 'Der d100 (oder d%) erzeugt eine Zahl von 1 bis 100 und wird in prozentualen Spielsystemen wie Cthulhu oder Warhammer Fantasy Roleplay verwendet. Er stellt die "direkte Wahrscheinlichkeit" dar: Wenn Ihr Fertigkeitswert in Schleichen 65 % beträgt, müssen Sie eine 65 oder weniger würfeln, um Erfolg zu haben.',
29
+ },
30
+ ];
31
+
32
+ const howTo: DiceRollerLocaleContent['howTo'] = [
33
+ { name: 'Würfelpool zusammenstellen', text: 'Klicken Sie auf die Würfelschaltflächen (d4, d6, d8...), um sie Ihrem Pool hinzuzufügen. Jeder Klick fügt einen Würfel des gewählten Typs hinzu. Sie können verschiedene Typen in demselben Wurf kombinieren.' },
34
+ { name: 'Modifikator anpassen', text: 'Verwenden Sie die Schaltflächen "+" und "−" neben dem Modifikator, um Boni oder Abzüge anzuwenden (wie den Attributsmodifikator in D&D). Der Modifikator wird automatisch zur Gesamtsumme addiert.' },
35
+ { name: 'Würfeln', text: 'Drücken Sie die Schaltfläche "Würfeln". Das rechte Feld zeigt die Gesamtsumme und die Aufschlüsselung der einzelnen Würfel, wobei Kritische Erfolge (Maximum) grün und Patzer (Minimum) rot markiert sind.' },
36
+ { name: 'Historie prüfen', text: 'Jeder Wurf wird in der Historie mit der verwendeten Würfelformel, dem Gesamtergebnis und der genauen Zeit aufgezeichnet. Sie können die Historie mit der entsprechenden Schaltfläche löschen.' },
37
+ ];
38
+
39
+ const faqSchema: WithContext<FAQPage> = {
40
+ '@context': 'https://schema.org',
41
+ '@type': 'FAQPage',
42
+ mainEntity: faq.map((item) => ({
43
+ '@type': 'Question',
44
+ name: item.question,
45
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
46
+ })),
47
+ };
48
+
49
+ const howToSchema: WithContext<HowTo> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'HowTo',
52
+ name: title,
53
+ description,
54
+ step: howTo.map((step) => ({
55
+ '@type': 'HowToStep',
56
+ name: step.name,
57
+ text: step.text,
58
+ })),
59
+ };
60
+
61
+ const appSchema: WithContext<SoftwareApplication> = {
62
+ '@context': 'https://schema.org',
63
+ '@type': 'SoftwareApplication',
64
+ name: title,
65
+ description,
66
+ applicationCategory: 'UtilitiesApplication',
67
+ operatingSystem: 'Web',
68
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
69
+ inLanguage: 'de',
70
+ };
71
+
72
+ export const content: DiceRollerLocaleContent = {
73
+ slug,
74
+ title,
75
+ description,
76
+ faqTitle: 'Häufig gestellte Fragen',
77
+ ui: {
78
+ title: 'Würfel Simulator',
79
+ description: 'Möge das Glück mit dir sein.',
80
+ rollBtn: 'Würfeln',
81
+ totalLabel: 'Summe',
82
+ historyLabel: 'Historie',
83
+ clearHistoryBtn: 'Historie löschen',
84
+ faqTitle: 'FAQ',
85
+ bibliographyTitle: 'Referenzen',
86
+ addDiceLabel: 'Würfel zum Beutel hinzufügen',
87
+ bagLabel: 'Würfelbeutel',
88
+ emptyBagBtn: 'Leeren',
89
+ emptyBagText: 'Klicke auf die Würfel, um sie hinzuzufügen',
90
+ modifierLabel: 'Modifikator',
91
+ rollManyLabel: '$COUNT Würfel werfen',
92
+ rollOneLabel: '$COUNT Würfel werfen',
93
+ preRollText: 'Würfel hinzufügen und werfen',
94
+ emptyHistoryText: 'Wurfhistorie wird hier angezeigt'
95
+ },
96
+ seo: [
97
+ { type: 'title', text: 'Die Kunst des Zufalls: Geschichte und Mathematik der Würfel', level: 2 },
98
+ { type: 'paragraph', html: 'Würfel gehören zu den ältesten Zufallsgeneratoren der Menschheit. <strong>Astragali</strong> - Sprungbeine von Schafen und Ziegen - wurden bereits 5000 v. Chr. in Mesopotamien und Ägypten als primitive vierseitige Würfel verwendet. Die Entwicklung vom geschnitzten Knochen bis hin zu modernen Ikosaedern aus Epoxidharz ist nicht nur ästhetischer Natur: Es ist eine Reise durch die Wahrscheinlichkeitstheorie und das Design von Spielmechaniken.' },
99
+ { type: 'title', text: 'Die Standard Würfelfamilie', level: 3 },
100
+ { type: 'paragraph', html: 'Das am weitesten verbreitete Würfelset in Rollenspielen - bekann gemacht durch <strong>Dungeons &amp; Dragons</strong> im Jahr 1974 - besteht aus den fünf platonischen Körpern plus zwei zusätzlichen Formen: d4 (Tetraeder), d6 (Würfel), d8 (Oktaeder), d10 (Pentagonales Trapezoeder), d12 (Dodekaeder), d20 (Ikosaeder) und d100 (Prozentwürfel). Jedes Polyeder garantiert eine Gleichverteilung: Alle Flächen haben genau die gleiche Wahrscheinlichkeit, gewürfelt zu werden.' },
101
+ { type: 'list', items: [
102
+ '<strong>d4 - Tetraeder:</strong> Am gefährlichsten, wenn man barfuß darauf tritt. Vier dreieckige Flächen, 25 % Wahrscheinlichkeit pro Fläche. Häufig verwendet für Dolchschaden oder Zaubersprüche auf niedriger Stufe.',
103
+ '<strong>d6 - Würfel:</strong> Der universellste Würfel. In allen Brettspielen seit dem ägyptischen Senet vorhanden. Seine kubische Geometrie garantiert perfekte Gleichverteilung.',
104
+ '<strong>d8 - Oktaeder:</strong> Der Würfel für den Speer oder die Streitaxt. Acht gleichseitige dreieckige Flächen. 12,5 % Wahrscheinlichkeit pro Fläche.',
105
+ '<strong>d10 - Pentagonales Trapezoeder:</strong> Der einzige nicht-platonische Körper im Standardset. Zwei gegenüberliegende Flächen pro "Ecke". Unverzichtbar für den d100 (zwei kombinierte d10).',
106
+ '<strong>d12 - Dodekaeder:</strong> Der Würfel des Barbaren. Zwölf fünfeckige Flächen. In vielen Systemen unterschätzt, Protagonist beim D&D 5e Barbaren.',
107
+ '<strong>d20 - Ikosaeder:</strong> Der König des Rollenspiels. Zwanzig dreieckige Flächen. Protagonist des d20-Systems: entscheidet über Erfolg oder Misserfolg fast aller Aktionen.',
108
+ '<strong>d100 - Prozentwürfel:</strong> Zwei kombinierte d10 (Zehner + Einer). Definiert feine Wahrscheinlichkeiten in Systemen wie Cthulhu oder Warhammer Fantasy.',
109
+ ]},
110
+ { type: 'stats', items: [
111
+ { value: '5000 v. Chr.', label: 'Erste Würfel (Astragali)', icon: 'mdi:history' },
112
+ { value: '1974', label: 'D&D machte das Set bekannt', icon: 'mdi:sword' },
113
+ { value: '7 Typen', label: 'Standard RPG Würfel', icon: 'mdi:dice-multiple' },
114
+ { value: '2¹²⁸', label: 'JS Zufallsperiode', icon: 'mdi:function-variant' },
115
+ ], columns: 4 },
116
+ { type: 'title', text: 'Wahrscheinlichkeiten und Verteilungskurven', level: 3 },
117
+ { type: 'paragraph', html: 'Wenn Sie einen einzelnen Würfel werfen, erhalten Sie eine <strong>diskrete Gleichverteilung</strong>: jedes Ergebnis hat genau die gleiche Wahrscheinlichkeit (1/n). Sobald Sie jedoch mehrere Würfel kombinieren, verwandelt die mathematische Magie diese flache Kurve in eine <strong>annähernde Normalverteilung</strong>. Deshalb ist 2d6 nicht gleich 1d12: Bei zwei sechsseitigen Würfeln beträgt die Wahrscheinlichkeit, eine 7 zu würfeln, 6/36 ≈ 16,7 %, während die Extreme (2 und 12) nur in 2,8 % der Fälle auftreten.' },
118
+ { type: 'tip', title: 'Vorteil und Nachteil (D&D 5e)', html: 'Die <strong>Vorteils</strong>-Mechanik besteht darin, 2d20 zu würfeln und das höhere Ergebnis zu behalten. Mathematisch erhöht dies den Durchschnitt von 10,5 auf etwa 13,8. <strong>Nachteil</strong> bewirkt das Gegenteil: Nehmen Sie den niedrigeren Wert, wodurch der Durchschnitt auf etwa 7,2 sinkt. Unser Simulator ermöglicht es Ihnen, dies zu simulieren, indem Sie zwei d20 zum Beutel hinzufügen und die Einzelergebnisse vergleichen.' },
119
+ { type: 'title', text: 'Modifikatoren: Die Brücke zwischen Würfeln und Charakter', level: 3 },
120
+ { type: 'paragraph', html: 'In den meisten Rollenspielsystemen agiert der Würfel nicht allein: Ein <strong>Modifikator</strong>, der die Fähigkeiten des Charakters darstellt, wird addiert oder subtrahiert. In D&D 5e bedeutet ein Stärkemodifikator von +5, dass Sie 1d20 würfeln, 5 addieren und das Ergebnis gegen die Rüstungsklasse des Gegners prüfen. Unser Simulator enthält eine Modifikatorsteuerung, um diese Mechaniken originalgetreu abzubilden.' },
121
+ { type: 'tip', title: 'Standard Würfel Notation', html: 'Die <strong>XdY+Z</strong>-Notation ist der De-facto-Standard in Rollenspielen: X Würfel mit Y Flächen mit Modifikator Z. "3d6+2" bedeutet, drei sechsseitige Würfel zu werfen und 2 zur Summe zu addieren. Unser Werkzeug verwendet diese Notation in der Historie, damit Sie Ihre Würfe leicht teilen oder aufzeichnen können.' },
122
+ { type: 'glossary', items: [
123
+ { term: 'Kritischer Treffer', definition: 'Ein Wurf des maximalen Wertes auf einem Würfel (z. B. eine 20 auf einem d20). Löst in den meisten RPG-Systemen normalerweise spezielle Bonuseffekte aus.' },
124
+ { term: 'Patzer / Nat 1', definition: 'Das Würfeln des Minimalwerts (1) auf einem Würfel. Führt oft zu einem dramatischen Misserfolg oder einer negativen Konsequenz.' },
125
+ { term: 'Würfelpool', definition: 'Eine Sammlung von Würfeln, die gleichzeitig geworfen werden. Der Pool in unserem Werkzeug zeigt jeden Würfeltyp gruppiert nach Anzahl an (z. B. 3d6 + 2d8).' },
126
+ { term: 'Modifikator', definition: 'Eine feste Zahl, die zu einem Würfelergebnis addiert oder davon subtrahiert wird und die Fertigkeit, den Attributsbonus oder einen situationsbedingten Abzug eines Charakters darstellt.' },
127
+ { term: 'Prozentwurf', definition: 'Ein Wurf mit zwei d10, um ein Ergebnis von 1-100 zu erhalten, verwendet in fertigkeitsbasierten Systemen, in denen Fähigkeiten als Prozentsätze gemessen werden.' },
128
+ ]},
129
+ ],
130
+ faq,
131
+ bibliography,
132
+ howTo,
133
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
134
+ };