9

这个隐藏的 html 游戏中的作弊/自动移动桨会是什么样子?

有一个

<div id="breakout-ball"><span>●&lt;/span></div>

和一个

<div id="breakout-paddle"></div>

移动鼠标时,桨叶水平移动。如何将球的运动与桨联系起来?

这个问题将尽快成为“社区维基”。

4

4 回答 4

6
function cheat() {
    var ball   = document.getElementById('breakout-ball');
    var paddle = document.getElementById('breakout-paddle');

    paddle.style.left = ball.style.left;

    setTimeout(cheat, 20);
}

cheat();

// Add this via the FireBug console. 
于 2013-05-13T23:45:43.283 回答
2

我稍微修改了您的解决方案,以考虑球离开屏幕并打破黑客攻击以及球被卡入角落的情况。

function cheat() {
  var ball   = document.getElementById('breakout-ball');
  var paddle = document.getElementById('breakout-paddle');

  var buffer = Math.floor((Math.random()*100)+1);
  var leftVal = parseInt(ball.style.left, 10);

  if (ball.style.left) {
    paddle.style.left = (leftVal - buffer) + 'px';
  }


  setTimeout(cheat, 100);
}

cheat();

不过说实话,如果你要走那条路,为什么不这样做呢?

function cheat() {
  var paddle = document.getElementById('breakout-paddle');

  paddle.style.width = '100%';
}

cheat();

无论如何,我将继续深入研究代码并进行更深入的操作

于 2013-05-14T00:14:35.913 回答
1

在chrome中,搜索游戏,ctrl+J,粘贴以下内容,然后回车。

这是一个简单的目标:

//get the ball's X position from its CSS
function ballx(){
    return parseFloat(document.querySelector("#breakout-ball").style.left.split("px")[0]);
}
function update(e){
    //throws an exception when the game isn't up. Can be really annoying.
    try{document.querySelector("#breakout-paddle").style.left = (ballx() - 75)+"px";}
    catch(ex){}
}
var intervalTimer = setInterval(update, 125);//let it have a single weakness in case someone else tries it while I am around.

间隔率越低,球拍相对于球移动的速度越快,但比赛进行得越慢。最大速率可以通过一个简单的 requestAnimationFrame 循环给出,但这会大大降低浏览器的速度(至少在我的笔记本电脑上)。

我尝试改变桨的大小。它真的不起作用。我确信使用 jQuery 会更简单,但是为什么在硬核已经如此容易的情况下让作弊变得容易呢?

于 2013-05-25T02:42:00.820 回答
1

我想出了一个新的方法来解决这个问题。每当屏幕大小或窗口大小改变时,桨叶会根据屏幕大小改变大小。为了解决这个问题,我只是添加了另一个部分,将桨的大小分成两半,然后使用该值找到桨的中心。非常简单而且非常有效。

function autoMove() {
var ball   = document.getElementById('breakout-ball')
var paddle = document.getElementById('breakout-paddle')

var leftVal = parseInt(ball.style.left, 10)
var paddleWidth = parseFloat(paddle.style.width, 10) / 2

paddle.style.left = (leftVal - paddleWidth) + 'px'

setTimeout(autoMove, 20)
}

autoMove();

另外,不喜欢函数名。看起来太可疑了,所以改了。希望这可以帮助。

于 2018-09-11T04:25:51.497 回答