talama/script.js
2024-11-11 10:00:15 +08:00

107 lines
4.2 KiB
JavaScript
Executable file

$(document).ready(function() {
// 大阿尔克那牌组
const majorArcana = [
"愚者", "魔术师", "女祭司", "女皇", "皇帝", "教皇", "恋人", "战车",
"力量", "隐士", "命运之轮", "正义", "倒吊人", "死神", "节制",
"恶魔", "塔", "星星", "月亮", "太阳", "审判", "世界"
];
// 中文数字数组
const chineseNumbers = ["一", "二", "三", "四", "五"];
// 牌阵定义
const spreads = {
"3": {
name: "圣三角牌阵",
description: ["我以为的状态", "真实的状态", "建言"],
template: "我以为的状态➊ 》真实的状态➋ 》建言 - {牌一}-{牌二}-{牌三}"
},
"4": {
name: "四张牌牌阵",
description: ["问题核心", "障碍", "对策", "优势"],
template: "问题核心➊ 》障碍➋ 》对策➌ 》优势➍ - {牌一}-{牌二}-{牌三}-{牌四}"
},
"5": {
name: "二选一牌阵",
description: ["选项A的状态", "选项B的状态", "选项A可能的结果", "选项B可能的结果", "当事人的状态"],
template: "选项A的状态➊ 》选项B的状态➋ 》选项A可能的结果➌ 》选项B可能的结果➍ 》当事人的状态➎ - {牌一}-{牌二}-{牌三}-{牌四}-{牌五}"
},
"5_standard": {
name: "五张牌牌阵",
description: ["位置1", "位置2", "位置3", "位置4", "位置5"],
template: "位置1➊ 》位置2➋ 》位置3➌ 》位置4➍ 》位置5➎ - {牌一}-{牌二}-{牌三}-{牌四}-{牌五}"
},
"5_love": {
name: "感情五张牌牌阵",
description: ["我的状态", "本人对我的感情态度", "对方的状态", "对方对我的感情态度", "可能的结果"],
template: "我的状态➊ 》本人对我的感情态度➋ 》对方的状态➌ 》对方对我的感情态度➍ 》可能的结果➎ - {牌一}-{牌二}-{牌三}-{牌四}-{牌五}"
}
};
// 随机抽取不重复的牌
function drawCards(count) {
let shuffled = [...majorArcana].sort(() => 0.5 - Math.random());
return shuffled.slice(0, count).map(card => {
return {
name: card,
position: Math.random() > 0.5 ? "正位" : "逆位"
};
});
}
// 更新UI显示牌
function displayCards(cards) {
let container = $("#cardContainer");
container.empty();
cards.forEach((card, index) => {
let cardDiv = $(`
<div class="tarot-card">
<div class="card-name">${card.name}</div>
<div class="card-position">${card.position}</div>
</div>
`);
container.append(cardDiv);
});
}
// 生成描述模板
function generateTemplate(spreadKey, cards) {
let spread = spreads[spreadKey];
if (!spread) return "";
let template = spread.template;
cards.forEach((card, index) => {
// 使用中文数字替换占位符
template = template.replace(`{牌${chineseNumbers[index]}}`, `${card.name} ${card.position}`);
});
return template;
}
// 处理抽牌按钮点击
$("#drawButton").click(function() {
let spreadKey = $("#spreadSelect").val();
if (!spreadKey) {
alert("请选择一个牌阵!");
return;
}
let spread = spreads[spreadKey];
let cardCount = spread.description.length;
let drawnCards = drawCards(cardCount);
displayCards(drawnCards);
let template = generateTemplate(spreadKey, drawnCards);
$("#templateText").text(template);
$("#templateSection").show();
});
// 复制模板功能
$("#copyButton").click(function() {
let text = $("#templateText").text();
navigator.clipboard.writeText(text).then(() => {
alert("模板已复制!");
}).catch(err => {
alert("复制失败,请手动复制。");
});
});
});