Page({ data: { todayDate: '', // 用于存储今天的日期 // 1. 桌面上现在展示的牌 (initial: null) currentCard: null, isRevealed: false, // 是否已经翻牌 explanation: '', // 用于存储动态生成的解牌文案 cardBackImage: '/images/beimian.png', // 牌背图片 // 3. 前缀文案列表(随机抽取) prefixList: [ "今天,这张牌提醒你:", "此刻,宇宙传递的信息:", "这张牌想告诉你:", "请收下这份指引:" ], // 2. 完整的 22 张大阿尔卡那牌组(包含逆位含义) cardList: [ { name: "0. 愚者", keyword: "新的开始", meaning: "放下恐惧,勇敢迈出第一步,世界充满无限可能。", reversedMeaning: "也许有些太冲动了?停下来检查一下背包,确保安全再出发。", image: "/images/yuzhe.png" }, { name: "I. 魔术师", keyword: "创造力", meaning: "你拥有实现目标所需的一切资源,现在是行动的时候。", reversedMeaning: "你是否低估了自己的能力?或者在犹豫不决?相信自己,工具就在手边。", image: "/images/moshushi.png" }, { name: "II. 女祭司", keyword: "直觉", meaning: "倾听内心的声音,答案就在你潜意识的深处。", reversedMeaning: "暂时听不见内心的声音了吗?别急着向外寻找,先让自己静下来。", image: "/images/nvjishi.png" }, { name: "III. 皇后", keyword: "丰饶", meaning: "享受生活的美好,去创造、去关爱,收获也是一种能力。", reversedMeaning: "是否忽略了对自己的关爱?或者有些过度保护?给彼此一点呼吸的空间。", image: "/images/nvhuang.png" }, { name: "IV. 皇帝", keyword: "秩序", meaning: "建立规则和结构,理性地掌控局面,承担起责任。", reversedMeaning: "有时候太固执会让人疲惫,适度放权,弹性也是一种力量。", image: "/images/huangdi.png" }, { name: "V. 教皇", keyword: "指引", meaning: "寻求传统智慧的帮助,或者成为他人的精神导师。", reversedMeaning: "不必拘泥于陈规旧矩,试着打破常规,寻找适合你自己的那条路。", image: "/images/jiaohuang.png" }, { name: "VI. 恋人", keyword: "选择", meaning: "跟随你的心,在关系中寻找和谐,做出忠于自我的决定。", reversedMeaning: "现在的关系是否有些失衡?先爱自己,才能更好地爱别人。", image: "/images/lianren.png" }, { name: "VII. 战车", keyword: "意志", meaning: "认准目标,克服相反的力量,胜利属于坚持到底的人。", reversedMeaning: "感觉失去了方向控制?慢下来,重新调整导航,欲速则不达。", image: "/images/zhanche.png" }, { name: "VIII. 力量", keyword: "勇气", meaning: "真正的力量是温柔的坚持,用耐心驯服内心的野兽。", reversedMeaning: "不要怀疑自己的韧性,面对内心的软弱并不是坏事,那是温柔的开始。", image: "/images/liliang.png" }, { name: "IX. 隐士", keyword: "内省", meaning: "暂时远离喧嚣,向内探索,寻找属于你自己的光。", reversedMeaning: "`是不是一个人待太久了?试着走出洞穴,和外界建立一点连接吧。", image: "/images/yinzhe.png" }, { name: "X. 命运之轮", keyword: "转折", meaning: "改变是永恒的,顺势而为,抓住出现在你面前的机会。", reversedMeaning: "运气暂时不在你这边,但没关系,低谷正是蓄力反弹的好时机。", image: "/images/mingyunzhilun.png" }, { name: "XI. 正义", keyword: "因果", meaning: "诚实面对真相,所有的决定都会带来相应的结果。", reversedMeaning: "即使结果不尽如人意,也要问心无愧。对自己诚实,比什么都重要。", image: "/images/zhengyi.png" }, { name: "XII. 倒吊人", keyword: "换位", meaning: "换一个角度看世界,有时候牺牲是为了更大的获得。", reversedMeaning: "挣扎只会更累,不如彻底放松,换个角度看世界,也许心结就解开了。", image: "/images/daodiaoren.png" }, { name: "XIII. 死神", keyword: "新生", meaning: "结束是为了新的开始,彻底告别过去,才能拥抱未来。", reversedMeaning: "还在紧抓着过去不放吗?只有腾出双手,才能接住新的礼物。", image: "/images/sishen.png" }, { name: "XIV. 节制", keyword: "平衡", meaning: "在极端之间寻找中庸之道,融合对立,通过耐心获得疗愈。", reversedMeaning: "是不是有些失衡了?在这忙乱的世界里,找回你内心的节奏和中点。", image: "/images/jiezhi.png" }, { name: "XV. 恶魔", keyword: "束缚", meaning: "觉察那些控制你的欲望或习惯,唯有觉知才能带来解脱。", reversedMeaning: "别被眼前的诱惑蒙蔽,或者感觉被束缚。其实锁链是松的,你随时可以走。", image: "/images/emo.png" }, { name: "XVI. 高塔", keyword: "崩塌", meaning: "不要害怕突如其来的剧变,它在摧毁虚假的根基,让你重建真实。", reversedMeaning: "废墟中反而能看清地基。既然倒了,正好可以按照你真正想要的样子重建。", image: "/images/ta.png" }, { name: "XVII. 星星", keyword: "希望", meaning: "黑暗之后必有星光,保持信心,未来充满治愈与灵感。", reversedMeaning: "暂时看不见星星也没关系,它们还在那里。给自己一点信心,黎明就在前方。", image: "/images/xingxing.png" }, { name: "XVIII. 月亮", keyword: "幻象", meaning: "直面内心的不安与迷茫,并非所有事情都如表象般真实。", reversedMeaning: "恐惧只是长长的影子,别被它吓住。随着天亮,迷雾终会散去。", image: "/images/yueliang.png" }, { name: "XIX. 太阳", keyword: "喜悦", meaning: "快乐、成功与活力,尽情地发光发热,享受当下的幸福。", reversedMeaning: "乌云暂时遮住了阳光,但这只是暂时的。保持乐观,你心里的光谁也偷不走。", image: "/images/taiyang.png" }, { name: "XX. 审判", keyword: "觉醒", meaning: "听到内心的召唤,回顾过往,做出决定,获得新生。", reversedMeaning: "不要对他人的评价太敏感,也不要自我怀疑。如果你准备好了,就出发吧。", image: "/images/shenpan.png" }, { name: "XXI. 世界", keyword: "圆满", meaning: "一段旅程的完美终点,成就感与整合,准备开始新的循环。", reversedMeaning: "机遇还没完全成熟,再耐心一点点。检查一下还有什么细节没完成?", image: "/images/shijie.png" } ] }, onLoad: function () { // 获取当前日期 const now = new Date(); const year = now.getFullYear(); const month = (now.getMonth() + 1).toString().padStart(2, '0'); const day = now.getDate().toString().padStart(2, '0'); const dateStr = `${year}-${month}-${day}`; this.setData({ todayDate: dateStr }); console.log('塔罗牌(完整版 22 张 + 逆位文案)已经洗好了...') }, // --- 抽一张牌 --- // --- 抽一张牌 --- drawCard: function () { const allCards = this.data.cardList; const randomIndex = Math.floor(Math.random() * allCards.length); // 1. 复制这张牌的数据(这也是为了安全,不弄脏牌库) // Object.assign 是这一行特殊的复制魔法 const selected = Object.assign({}, allCards[randomIndex]); // 2. 扔硬币:50% 概率决定是否逆位 (isReversed) selected.isReversed = Math.random() >= 0.5; // 3. 随机选择一个前缀 const prefixes = this.data.prefixList; const randomPrefixIndex = Math.floor(Math.random() * prefixes.length); const selectedPrefix = prefixes[randomPrefixIndex]; // 4. 拍桌子 (先盖着牌) this.setData({ currentCard: selected, isRevealed: false, // 刚抽的时候是盖着的 explanation: `${selectedPrefix}${selected.isReversed ? selected.reversedMeaning : selected.meaning}` }); console.log("抽到了:", selected.name, selected.isReversed ? "逆位" : "正位"); }, // --- 翻牌动作 --- revealCard: function () { if (this.data.isRevealed) return; // 如果已经翻开了,就别动了 this.setData({ isRevealed: true }); } })