您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
calculates difference between white and black blocks
// ==UserScript== // @name Jstris Parity Script // @namespace http://tampermonkey.net/ // @version 1.3 // @description calculates difference between white and black blocks // @author frey and truebulge (mostly frey) // @match https://*.jstris.jezevec10.com/* // @grant none // ==/UserScript== /************************** Parity Script **************************/ (function() { window.addEventListener('load', function(){ var rect = holdCanvas.getBoundingClientRect(); var p = document.createElement("div"); p.id = "pace" p.style = ("color:#999;width:150px;position:absolute;top:"+(rect.top+100)+"px;left:"+(rect.left-50)+"px") p.innerHTML = ` <table style='width:100%;height:100%;table-layout:fixed;'> <tr> <th style='text-align:center' colspan="2">Parity:</th> </tr> <tr> <td id='parity'>0</td> </tr> </table> ` document.body.appendChild(p); let repActive = true if(typeof Replayer != "undefined"){ const styleTag = document.createElement("style"); styleTag.innerText = "#BG_only{background-color:#000000;background-size:auto;}"; let head = document.querySelector("head"); head.appendChild(styleTag); Replayer.prototype.checkParity = function(){ if(!repActive)return var parity = document.getElementById('parity'); let board = this.matrix let whites = 0 let blacks = 0 for(let col in board[0]){ for(let row =-1; row< board.length; row++){ let b = this.deadline[col] if(row>=0)b = board[row][col] if(b==0)continue if(col%2==0)whites+=1 else blacks+=1 } } let vert = whites-blacks whites = 0 blacks = 0 for(let row =-1; row< board.length; row++){ for(let col in board[0]){ let b = this.deadline[col] if(row>=0)b = board[row][col] if(b==0)continue if(row%2==0)whites+=1 else blacks+=1 } } let horiz = whites - blacks blacks = 0 whites = 0 for(let row in board){ for(let col in board){ if(row%2==col%2){ whites += board[row][col]!=0 } else{ blacks +=board[row][col]!=0 } } } for(let col = 0; col < this.deadline.length; col++){ if(col%2==0)blacks+= this.deadline[col]!=0 else whites+= this.deadline[col]!=0 } let check = whites - blacks parity.innerHTML= "vert " + vert + " horiz " + horiz + " check " + check } let replayer_next_block = Replayer.prototype.getNextBlock; Replayer.prototype.getNextBlock = function() { let val = replayer_next_block.apply(this, arguments); this.checkParity(); return val }; let replayer_add_garbage = Replayer.prototype.addGarbage; Replayer.prototype.addGarbage = function() { let val = replayer_add_garbage.apply(this, arguments); this.checkParity(); return val }; } if(typeof Game != "undefined"){ repActive = false const styleTag = document.createElement("style"); styleTag.innerText = "#BG_only{background-color:#000000;background-size:auto;}"; let head = document.querySelector("head"); head.appendChild(styleTag); Game.prototype.checkParity = function(){ var parity = document.getElementById('parity'); let board = this.matrix let whites = 0 let blacks = 0 for(let col in board[0]){ for(let row =-1; row< board.length; row++){ let b = this.deadline[col] if(row>=0)b = board[row][col] if(b==0)continue if(col%2==0)whites+=1 else blacks+=1 } } let vert = whites-blacks whites = 0 blacks = 0 for(let row =-1; row< board.length; row++){ for(let col in board[0]){ let b = this.deadline[col] if(row>=0)b = board[row][col] if(b==0)continue if(row%2==0)whites+=1 else blacks+=1 } } let horiz = whites - blacks blacks = 0 whites = 0 for(let row in board){ for(let col in board){ if(row%2==col%2){ whites += board[row][col]!=0 } else{ blacks +=board[row][col]!=0 } } } for(let col = 0; col < this.deadline.length; col++){ if(col%2==0)blacks+= this.deadline[col]!=0 else whites+= this.deadline[col]!=0 } let check = whites - blacks parity.innerHTML= "vert " + vert + " horiz " + horiz + " check " + check } let game_next_block = Game.prototype.getNextBlock; Game.prototype.getNextBlock = function() { let val = game_next_block.apply(this, arguments); this.checkParity(); return val }; let game_add_garbage = Game.prototype.addGarbage; Game.prototype.addGarbage = function() { let val = game_add_garbage.apply(this, arguments); this.checkParity(); return val }; } } ); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址