如何统计轮盘类游戏中coin coin-ct连续出现3或4次的次数?
统计
coin coin-ct连续3/4次出现的完整次数 嘿,我来帮你搞定这个轮盘游戏的统计需求!要统计coin coin-ct连续出现3次或4次的完整次数,我们可以用JavaScript来实现,步骤很清晰:
第一步:理解需求
我们要找的是刚好连续3次或4次出现coin-ct的独立序列次数——比如连续3次ct算1次,连续4次算1次,而连续5次及以上的情况不算(如果你的需求是要统计连续段中包含的3/4次序列,我后面也会补充说明)。
第二步:提取游戏结果
首先我们需要从HTML中提取每一轮的游戏结果,把它们转换成一个便于处理的数组:
// 获取所有.icon-box下的coin元素 const coinElements = document.querySelectorAll('.icon-box .coin'); // 转换为结果类型数组(只保留ct/t/bonus) const results = Array.from(coinElements).map(element => { if (element.classList.contains('coin-ct')) return 'ct'; if (element.classList.contains('coin-t')) return 't'; if (element.classList.contains('coin-bonus')) return 'bonus'; return null; // 处理异常情况,比如未知类名 }).filter(result => result !== null); // 过滤无效结果
第三步:统计连续次数
接下来遍历结果数组,跟踪当前ct的连续次数,每当遇到非ct结果或遍历结束时,检查当前连续次数是否符合3/4次的条件:
let currentStreak = 0; let streak3Count = 0; // 连续3次的次数 let streak4Count = 0; // 连续4次的次数 let totalValidStreaks = 0; // 遍历结果数组 for (const result of results) { if (result === 'ct') { currentStreak++; } else { // 遇到非ct结果,检查当前连续次数 checkValidStreak(currentStreak); currentStreak = 0; // 重置连续次数 } } // 遍历结束后,检查最后一段连续的ct(如果有的话) checkValidStreak(currentStreak); // 定义检查连续次数的辅助函数 function checkValidStreak(streakLength) { if (streakLength === 3) { streak3Count++; totalValidStreaks++; } else if (streakLength === 4) { streak4Count++; totalValidStreaks++; } // 如果是连续5次及以上,这里不统计(若需要统计请看下文) } // 输出结果 console.log(`连续3次coin-ct的次数:${streak3Count}`); console.log(`连续4次coin-ct的次数:${streak4Count}`); console.log(`符合条件的总次数:${totalValidStreaks}`);
测试你的示例
用你提供的两个示例来验证:
- 示例1的结果数组是
['ct','ct','ct'],遍历结束后会统计到1次连续3次的情况,streak3Count和totalValidStreaks都是1。 - 完整代码示例的结果数组是
['ct','ct','bonus','t','ct'],最长连续ct次数是2,所以没有符合条件的次数,totalValidStreaks为0。
补充:如果需要统计连续段中包含的3/4次序列
如果你的需求是“在连续5次ct中,统计其中包含的连续3次和4次的次数”(比如连续5次ct包含1次连续4次和3次连续3次的序列),可以修改checkValidStreak函数:
function checkValidStreak(streakLength) { // 统计连续3次的序列数:长度n的连续段有n-3+1个连续3次序列 if (streakLength >= 3) { streak3Count += streakLength - 3 + 1; totalValidStreaks += streakLength - 3 + 1; } // 统计连续4次的序列数:长度n的连续段有n-4+1个连续4次序列 if (streakLength >= 4) { streak4Count += streakLength - 4 + 1; totalValidStreaks += streakLength - 4 + 1; } }
比如连续5次ct的话,会统计到3次连续3次的序列,2次连续4次的序列,总次数是5。
内容的提问来源于stack exchange,提问作者John White
相关产品推荐
相关产品推荐

