带上幻想去冒险!

本WIKI编辑权限开放,数据均为人工整理,如发现内容缺失或错误,可在留言板处反馈,也可点击页面右上方的编辑按钮参与更新内容。
欢迎收藏起来防止迷路,也希望有爱的小伙伴加入我们哦~
WIKI编辑帮助幻塔WIKI留言板 • WIKI交流群:599132150

全站通知:

Widget:Ewallet

来自幻塔WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<!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>
       .gacha-simulator {
           font-family: Arial, sans-serif;
           background-color: #2C3E50;
           color: white;
           padding: 20px;
           border-radius: 10px;
           box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
           width: 90%;
           max-width: 600px;
           margin: 20px auto;
           text-align: center;
       }
       .gacha-simulator h1 {
           font-size: 24px;
           margin-bottom: 20px;
       }
       .gacha-simulator label {
           display: block;
           margin: 10px 0;
           font-size: 16px;
       }
       .gacha-simulator input[type="number"],
       .gacha-simulator select {
           padding: 10px;
           width: 80%;
           max-width: 300px;
           border: none;
           border-radius: 5px;
           background-color: #34495E;
           color: white;
       }
       .gacha-simulator button {
           padding: 10px 20px;
           background-color: #3498DB;
           color: white;
           border: none;
           border-radius: 5px;
           cursor: pointer;
           margin: 10px 0;
       }
       .gacha-simulator button:hover {
           background-color: #2980B9;
       }
       .gacha-simulator .result {
           margin-top: 20px;
           font-size: 16px;
           background-color: #34495E;
           padding: 15px;
           border-radius: 5px;
           text-align: left;
       }
       .gacha-simulator .checkbox-group {
           margin: 10px 0;
       }
   </style>

</head> <body>

🌸 幻塔意志卡池模拟器 🌸

       <label for="targetStar">目标星级:</label>
       <select id="targetStar">
           <option value="0">0星</option>
           <option value="1">1星</option>
           <option value="2">2星</option>
           <option value="3">3星</option>
       </select>
       <label for="currency">持有货币:</label>
       <input id="currency" type="number" placeholder="请输入你拥有的货币数量">
           <label>
               <input type="checkbox" id="exchangeCustom" onchange="toggleCustomExchange()">
               兑换自定义位置铸币(仅差一个时生效)
           </label>
       <button onclick="startSimulation()">开始模拟</button>
   <script>
       const POSITIONS = ['左上', '右上', '左下', '右下'];
       const STAR_REQUIRE = [1, 2, 3, 4]; // 各星级需要数量
       let allowCustomExchange = false; // 是否允许兑换自定义位置铸币
       class GachaSimulator {
           constructor() {
               this.inventory = POSITIONS.reduce((acc, pos) => {
                   acc[pos] = { count: 0, locked: false };
                   return acc;
               }, {});
               this.currency = 0;
               this.targetStar = 3;
           }
           // 核心抽卡逻辑
           singlePull() {
               let result = null;
               // 保底机制
               if (this.currency % 40 === 0) {
                   result = this.generateWill(true);
               } else if (Math.random() < 0.0075) {
                   result = this.generateWill(Math.random() < 0.5);
               }
               this.currency--;
               return result;
           }
           generateWill(isLimited) {
               const availablePositions = POSITIONS.filter(pos =>
                   !this.inventory[pos].locked &&
                   this.inventory[pos].count < STAR_REQUIRE[this.targetStar]
               );
               if (availablePositions.length === 0) return null;
               const position = availablePositions[Math.floor(Math.random() * availablePositions.length)];
               this.inventory[position].count++;
               // 自动锁定逻辑
               if (this.inventory[position].count >= STAR_REQUIRE[this.targetStar]) {
                   this.inventory[position].locked = true;
               }
               return { position, isLimited };
           }
           // 兑换功能
           exchange(position) {
               if (this.currency >= 80 && !this.inventory[position].locked) {
                   this.currency -= 80;
                   this.inventory[position].count++;
                   if (this.inventory[position].count >= STAR_REQUIRE[this.targetStar]) {
                       this.inventory[position].locked = true;
                   }
                   return true;
               }
               return false;
           }
           // 自定义兑换功能(仅差一个时生效)
           customExchange() {
               if (!allowCustomExchange) return false;
               const positionsNeeded = POSITIONS.filter(pos =>
                   this.inventory[pos].count === STAR_REQUIRE[this.targetStar] - 1
               );
               if (positionsNeeded.length === 1 && this.currency >= 80) {
                   const position = positionsNeeded[0];
                   this.currency -= 80;
                   this.inventory[position].count++;
                   if (this.inventory[position].count >= STAR_REQUIRE[this.targetStar]) {
                       this.inventory[position].locked = true;
                   }
                   return true;
               }
               return false;
           }
           // 完整模拟流程
           simulate(initialCurrency, targetStar) {
               this.currency = initialCurrency;
               this.targetStar = targetStar;
               let attempts = 0;
               const maxAttempts = 10000;
               while (this.currency > 0 && attempts < maxAttempts) {
                   this.singlePull();
                   attempts++;
                   // 优先兑换最缺的部位
                   const weakestPosition = POSITIONS.reduce((minPos, pos) => {
                       return this.inventory[pos].count < this.inventory[minPos].count ? pos : minPos;
                   }, POSITIONS[0]);
                   if (this.currency >= 80) this.exchange(weakestPosition);
                   // 自定义兑换(仅差一个时生效)
                   if (allowCustomExchange) this.customExchange();
               }
               return this.getCurrentProgress();
           }
           getCurrentProgress() {
               return POSITIONS.map(pos => ({
                   position: pos,
                   count: this.inventory[pos].count,
                   star: Math.min(3, Math.floor(this.inventory[pos].count / STAR_REQUIRE[this.targetStar]))
               }));
           }
       }
       function toggleCustomExchange() {
           allowCustomExchange = document.getElementById('exchangeCustom').checked;
       }
       function calculateSuccessRate(currency, targetStar) {
           let successCount = 0;
           const totalSimulations = 1000;
           for (let i = 0; i < totalSimulations; i++) {
               const simulator = new GachaSimulator();
               const result = simulator.simulate(currency, targetStar);
               if (result.every(item => item.star >= targetStar)) {
                   successCount++;
               }
           }
           return (successCount / totalSimulations * 100).toFixed(1);
       }
       function startSimulation() {
           const target = parseInt(document.getElementById('targetStar').value);
           const currency = parseInt(document.getElementById('currency').value);
           if (isNaN(target) || isNaN(currency)) {
               alert("请输入完整信息!");
               return;
           }
           const successRate = calculateSuccessRate(currency, target);
           let recommendation = `当前目标:${target} 星(综合成功率:${successRate}%)`;
           // 降档推荐逻辑
           if (successRate < 50) {
               let lowerTarget = target - 1;
               while (lowerTarget >= 0) {
                   const lowerSuccessRate = calculateSuccessRate(currency, lowerTarget);
                   if (lowerSuccessRate >= 50) {
                       recommendation += `
建议降档目标:${lowerTarget} 星(成功率:${lowerSuccessRate}%)`; break; } lowerTarget--; } }
           document.getElementById('result').innerHTML = `

模拟结果 (1000轮)

${recommendation}

           `;
       }
   </script>

</body> </html>