javascript - 防止用户在浏览器控制台中更改游戏值

标签 javascript html console console.log

任何玩家都可以通过浏览器控制台更改纸杯蛋糕的数量来轻松作弊。我想知道是否有办法阻止用户这样做。这也发布在 github 上.

var numberOfCupcakesDisplay = document.getElementById("numberOfCupcakes");
var cupcake = document.getElementById("cupcake");

function updateValues() {
    numberOfCupcakesDisplay.innerHTML = amountOfCupcakes.toString();
    //displays number of cupcakes to screen
    document.getElementById("amountOfToasters").innerHTML = amountOfToasters.toString();
    //displays number of toasters to screen
    document.getElementById("toasterButton").innerHTML = "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + Math.round(costOfToasters).toString() + " cc";
    //changes cost of toaster every time it is bought by 110%
}

cupcake.addEventListener('webkitAnimationEnd', function(e){
    e.preventDefault();
    this.style.webkitAnimationName = '';
}, false);

function clickCupcake() {
    ++amountOfCupcakes;
    cupcake.style.animation = "shiftCupcake";
    cupcake.style.webkitAnimationName = "shiftCupcake";
}

updateValues();

最佳答案

是啊!!正如其他答案提到的那样,阻止用户从浏览器控制台更改值是IMPOSSIBLE。换句话说,您只是在问如何编写 JS 代码以便用户无法调试。你总是可以使用一些方法让那些想在游戏中作弊的人过不去。

1.Obfuscate the code.

查看这些链接以获取有关混淆的更多信息。

2.Do not store the game's control values in global variable.

不要将控制值存储在全局变量中。而是定义一个类并将这些变量作为私有(private)变量以便用户必须深入挖掘才能找出断点的位置。

3.Minify/Compress your javascripts.

混淆或多或少也包括缩小。

关于javascript - 防止用户在浏览器控制台中更改游戏值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20590690/

相关文章:

Javascript - 控制台中显示 undefined variable

javascript - 对于 Greasemonkey 中的这个 jQuery 示例,为什么会触发 alert() 但不会触发 console.log()?

javascript - jQuery 替换括号之间的文本

javascript - 正则表达式 - 验证电子邮件的本地部分不以点结尾,同时只允许某些字符而不使用后视

javascript - 这个属性可以控制吗?

javascript - 我应该通过 id/class 名称还是数据属性来选择 DOM 元素?

javascript - 对按罗马数字 ID 排序的 html 元素进行排序

javascript - 了解多次迭代的返回如何工作

html - 怎样让里伸下来

python - 使用 python 启动使用 chcp 65001 预激活的控制台窗口