Gooboo学习数学计算

Gooboo游戏辅助脚本,辅助完成学习任务,点击直接复制运算结果

  1. // ==UserScript==
  2. // @name Gooboo学习数学计算
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2.1
  5. // @description Gooboo游戏辅助脚本,辅助完成学习任务,点击直接复制运算结果
  6. // @author RouJiANG
  7. // @match *://gityxs.github.io/*
  8. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  9. // @license GPL
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // 创建按钮
  17. const button = document.createElement('button');
  18. button.textContent = '复制运算结果';
  19. button.style.position = 'fixed';
  20. button.style.top = '30%';
  21. button.style.left = '60%';
  22. button.style.transform = 'translate(-50%, -50%)';
  23. button.style.zIndex = 1000;
  24. button.style.display = 'none'; // 初始时隐藏按钮
  25. document.body.appendChild(button);
  26.  
  27. // // 解析并计算数学表达式
  28. // function calculateExpression(expression) {
  29. // try {
  30. // return eval(expression);
  31. // } catch (e) {
  32. // console.error('运算错误:', e);
  33. // return null; // 如果运算出错,返回null
  34. // }
  35. // }
  36.  
  37. // // 检查指定元素是否存在并更新按钮显示状态
  38. // function checkAndUpdateButton() {
  39. // const element = document.querySelector('div.text-center.question-text');
  40. // if (element) {
  41. // button.style.display = 'block'; // 显示按钮
  42. // button.onclick = function() {
  43. // const rawText = element.textContent;
  44. // const expression = rawText.replace(/\s/g, ''); // 去除空白字符
  45. // const result = calculateExpression(expression); // 计算表达式结果
  46. // if (result !== null) {
  47. // navigator.clipboard.writeText(result.toString()).then(function() {
  48. // console.log('复制成功:', result);
  49. // }, function(err) {
  50. // console.error('复制失败:', err);
  51. // });
  52. // }
  53. // };
  54. // } else {
  55. // button.style.display = 'none'; // 隐藏按钮
  56. // }
  57. // }
  58.  
  59. // // 每隔一段时间检查一次元素是否存在
  60. // setInterval(checkAndUpdateButton, 1000); // 每秒检查一次
  61. // })();
  62.  
  63. // 解析并计算数学表达式(包括根号和指数运算)
  64. function calculateExpression(expression) {
  65. try {
  66. // 替换根号运算
  67. expression = expression.replace(/√(\d+)/g, function(match, p1) {
  68. return Math.sqrt(parseInt(p1, 10));
  69. });
  70.  
  71. // 替换指数运算
  72. expression = expression.replace(/\^/g, '**');
  73.  
  74. // 使用 eval 计算表达式
  75. return eval(expression);
  76. } catch (e) {
  77. console.error('运算错误:', e);
  78. return null; // 如果运算出错,返回 null
  79. }
  80. }
  81.  
  82. // 检查指定元素是否存在并更新按钮显示状态
  83. function checkAndUpdateButton() {
  84. const element = document.querySelector('div.text-center.question-text');
  85. if (element) {
  86. button.style.display = 'block'; // 显示按钮
  87. button.onclick = function() {
  88. const rawText = element.textContent;
  89. const expression = rawText.replace(/\s/g, ''); // 去除空白字符
  90. const result = calculateExpression(expression);
  91. if (result !== null) {
  92. const answerInput = document.getElementById('answer-input-math');
  93. answerInput.value = result; // 将结果设置为输入框的值
  94. answerInput.focus(); // 让输入框获得焦点
  95. answerInput.select(); // 选中输入框中的文本
  96. document.execCommand('copy'); // 复制选中的文本
  97. // console.log('复制成功并已输入到输入框:', result);
  98. }
  99. };
  100. } else {
  101. button.style.display = 'none'; // 隐藏按钮
  102. }
  103. }
  104.  
  105. // 每隔一段时间检查一次元素是否存在
  106. setInterval(checkAndUpdateButton, 1000); // 每秒检查一次
  107. })();
  108.  
  109.