1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>六爻起卦模拟</title> <style> body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; padding: 0; background-color: #f4f4f9; } .container { max-width: 600px; margin: auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } h1 { text-align: center; color: #333; } button { display: block; width: 100%; padding: 10px; margin-top: 20px; background: #007BFF; color: #fff; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; } button:hover { background: #0056b3; } .result { margin-top: 20px; padding: 15px; background: #f9f9f9; border: 1px solid #ddd; border-radius: 5px; } .result p { margin: 0; padding: 5px 0; } </style> </head> <body> <div class="container"> <h1>六爻起卦模拟</h1> <button onclick="generateHexagram()">生成卦象</button> <div class="result" id="result"> <p>点击按钮以生成卦象</p> </div> </div>
<script> const guaDict = { "111111": "乾卦 - 天", "000000": "坤卦 - 地", "100010": "屯卦 - 水雷屯", "010001": "蒙卦 - 山水蒙", "100110": "需卦 - 水天需", "011001": "讼卦 - 天水讼", "000010": "师卦 - 地水师", "010000": "比卦 - 水地比", "110111": "小畜卦 - 风天小畜", "111011": "履卦 - 天泽履", "000111": "泰卦 - 地天泰", "111000": "否卦 - 天地否", "111101": "同人卦 - 天火同人", "101111": "大有卦 - 火天大有", "000100": "谦卦 - 地山谦", "001000": "豫卦 - 雷地豫", "011001": "随卦 - 泽雷随", "100101": "蛊卦 - 山风蛊", "000011": "临卦 - 地泽临", "110000": "观卦 - 风地观", "101001": "噬嗑卦 - 火雷噬嗑", "100101": "贲卦 - 山火贲", "100000": "剥卦 - 山地剥", "000101": "复卦 - 地雷复", "111001": "无妄卦 - 天雷无妄", "100111": "大畜卦 - 山天大畜", "001111": "颐卦 - 山雷颐", "111100": "大过卦 - 泽风大过", "001001": "坎卦 - 坎为水", "110011": "离卦 - 离为火", "011000": "咸卦 - 泽山咸", "000110": "恒卦 - 雷风恒", "111110": "遁卦 - 天山遁", "011111": "大壮卦 - 雷天大壮", "100011": "晋卦 - 火地晋", "110100": "明夷卦 - 地火明夷", "011111": "家人卦 - 风火家人", "111110": "睽卦 - 火泽睽", "001011": "蹇卦 - 水山蹇", "110001": "解卦 - 雷水解", "001100": "损卦 - 山泽损", "101100": "益卦 - 风雷益", "110101": "夬卦 - 泽天夬", "101110": "姤卦 - 天风姤", "001110": "萃卦 - 泽地萃", "010001": "升卦 - 地风升", "010110": "困卦 - 泽水困", "101010": "井卦 - 水风井", "010101": "革卦 - 泽火革", "101101": "鼎卦 - 火风鼎", "001100": "震卦 - 震为雷", "100001": "艮卦 - 艮为山", "101011": "渐卦 - 风山渐", "110110": "归妹卦 - 雷泽归妹", "001111": "丰卦 - 雷火丰", "111000": "旅卦 - 火山旅", "101010": "巽卦 - 巽为风", "010010": "兑卦 - 兑为泽", "101110": "涣卦 - 风水涣", "011101": "节卦 - 水泽节", "110110": "中孚卦 - 风泽中孚", "011011": "小过卦 - 雷山小过", "101011": "既济卦 - 水火既济", "110101": "未济卦 - 火水未济", };
function tossCoins() { const coin1 = Math.random() < 0.5 ? 2 : 3; const coin2 = Math.random() < 0.5 ? 2 : 3; const coin3 = Math.random() < 0.5 ? 2 : 3; const sum = coin1 + coin2 + coin3;
if (sum === 6) return { value: 0, isMoving: true }; if (sum === 7) return { value: 1, isMoving: false }; if (sum === 8) return { value: 0, isMoving: false }; if (sum === 9) return { value: 1, isMoving: true }; }
function generateHexagram() { const hexagram = []; const movingPositions = []; const resultDiv = document.getElementById("result"); resultDiv.innerHTML = "<p>掷铜钱的结果:</p>";
for (let i = 0; i < 6; i++) { const result = tossCoins(); hexagram.push(result.value); if (result.isMoving) movingPositions.push(i); resultDiv.innerHTML += `<p>第${i + 1}爻:${result.value === 1 ? "阳" : "阴"}${result.isMoving ? "(动爻)" : ""}</p>`; }
const mainHexagramStr = hexagram.slice().reverse().join(""); const mainHexagramName = guaDict[mainHexagramStr] || "未知卦"; resultDiv.innerHTML += `<p><strong>主卦:</strong> ${mainHexagramStr} - ${mainHexagramName}</p>`;
if (movingPositions.length > 0) { const changingHexagram = [...hexagram]; movingPositions.forEach(pos => { changingHexagram[pos] = changingHexagram[pos] === 1 ? 0 : 1; }); const changingHexagramStr = changingHexagram.slice().reverse().join(""); const changingHexagramName = guaDict[changingHexagramStr] || "未知卦"; resultDiv.innerHTML += `<p><strong>变卦:</strong> ${changingHexagramStr} - ${changingHexagramName}</p>`; } else { resultDiv.innerHTML += `<p><strong>无变卦</strong></p>`; } } </script> </body> </html>
|