You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现点击测试游戏的每秒点击次数统计功能

实现点击测试游戏的CPS(每秒点击次数)显示方案

嘿,我来帮你搞定这个CPS显示的问题!其实核心逻辑很简单,就是用总点击数除以测试已经进行的时间(秒),下面我会结合常见的前端点击测试结构,给你具体的实现步骤:

1. 先初始化关键变量

首先在你的代码里定义几个必须的变量,用来追踪点击数、开始时间和更新定时器:

// 记录总点击次数
let clickCount = 0;
// 测试开始的时间戳(初始为null,开始后赋值)
let startTime = null;
// 用来实时更新CPS的定时器ID
let cpsUpdateTimer = null;

2. 处理测试启动逻辑

不管你是用单独的“开始”按钮,还是第一次点击目标区域就启动测试,都要在这里记录开始时间并启动CPS更新定时器:

function startClickTest() {
  clickCount = 0;
  startTime = Date.now(); // 获取当前毫秒级时间戳
  // 每100ms更新一次CPS(比每秒更新更流畅)
  cpsUpdateTimer = setInterval(updateCPSDisplay, 100);
}

3. 计算并实时更新CPS

编写一个函数来计算当前的CPS,并把结果渲染到页面上:

function updateCPSDisplay() {
  if (!startTime) return; // 还没开始测试就直接返回
  
  // 计算已经过去的时间(转换为秒)
  const elapsedSeconds = (Date.now() - startTime) / 1000;
  // 计算CPS,保留1位小数让显示更友好
  const currentCPS = (clickCount / elapsedSeconds).toFixed(1);
  
  // 把结果显示到页面上,假设你有一个id为cps-show的元素
  document.getElementById('cps-show').textContent = `当前每秒点击:${currentCPS}`;
}

4. 处理点击计数逻辑

每次用户点击目标区域时,增加点击数,顺便可以同步更新总点击数的显示:

function handleTargetClick() {
  if (!startTime) {
    // 如果还没开始测试,第一次点击就启动
    startClickTest();
  }
  clickCount++;
  // 更新总点击数显示(可选)
  document.getElementById('total-clicks').textContent = `总点击:${clickCount}`;
}

5. 结束测试的收尾逻辑(可选)

如果有结束按钮或者测试时长限制,记得清除定时器,避免内存泄漏:

function endClickTest() {
  clearInterval(cpsUpdateTimer);
  // 计算最终的平均CPS
  const totalSeconds = (Date.now() - startTime) / 1000;
  const finalCPS = (clickCount / totalSeconds).toFixed(1);
  alert(`测试结束!你的平均CPS是:${finalCPS}`);
  // 重置变量,方便下次测试
  startTime = null;
}

小提示

  • 把定时器间隔设为100ms而不是1000ms,CPS的显示会更顺滑,不会有明显的卡顿感;
  • 记得处理用户误操作的情况,比如还没开始就点击,或者测试中途刷新页面,及时重置变量。

内容的提问来源于stack exchange,提问作者Lumeriaux Yt

火山引擎 最新活动