diff --git a/fortune_generator/fortune.js b/fortune_generator/fortune.js index b798c89..5de1633 100644 --- a/fortune_generator/fortune.js +++ b/fortune_generator/fortune.js @@ -15,8 +15,8 @@ fetch("fortune.json") const textColor = ["#e74c3c", "#e74c3c", "#e74c3c", "#70ad47", "#000000bf", "#000000bf", "#000000bf"]; const fortuneStatus = ["大吉", "中吉", "小吉", "中平", "凶", "小凶", "大凶"]; -const allGood = `萬事皆吉`; -const allBad = `萬事皆凶`; +const allGood = `萬事皆宜`; +const allBad = `諸事不宜`; function Appear() { let p = 0; @@ -28,23 +28,38 @@ function Appear() { } num[p] = num[p] * 10 + parseInt(ip[i]); } + let d = new Date(); - let seed = (num[0] >> 3) * (num[1] >> 2) + (num[2] << 1) * (num[3] >> 3) + (d.getDate() << 3) * ((d.getMonth() + 1) << 5) + 2; + let seed = (num[0] >> 3) * (num[1] >> 2) + (num[2] << 1) * (num[3] >> 3) + (d.getDate() << 3) * ((d.getMonth() + 1) << 5) + d.getFullYear(); const len = fortunes.length; + let status = `§ ${fortuneStatus[seed % 7]} §`; $('#ip-to-fortune').html(status); + let left_1, left_2, right_1, right_2; - left_1 = `宜: ${fortunes[seed % len].event}`; - left_2 = `宜: ${fortunes[(seed + d.getDate()) % len].event}`; - right_1 = `忌: ${fortunes[seed % len + d.getMonth()].event}`; - right_2 = `忌: ${fortunes[(seed + d.getDate() + 1) % len].event}`; + let l1, l2, r1, r2; + let set = new Set(); + l1 = seed % len; + set.add(l1); + l2 = (seed + d.getDate()) % len; + while(set.has(l2)) l2 = (l2 + 1) % len; + set.add(l2); + r1 = (seed + d.getMonth() << 3) % len; + while(set.has(r1)) r1 = (r1 + 2) % len; + set.add(r1); + r2 = (seed + (d.getFullYear() >> 5) * (d.getDate << 2)) % len; + while(set.has(r2)) r2 = (r2 + 1) % len; + left_1 = `宜: ${fortunes[l1].event}`; + left_2 = `宜: ${fortunes[l2].event}`; + right_1 = `忌: ${fortunes[r1].event}`; + right_2 = `忌: ${fortunes[r2].event}`; if(seed % 7 == 0){ - $('#right-1').html(allBad); + $('#right-1').html(allGood); $('#left-1').html(left_1); $('#left-2').html(left_2); } else if(seed % 7 == 6){ - $('#left-1').html(allGood); + $('#left-1').html(allBad); $('#right-1').html(right_1); $('#right-2').html(right_2); }