私はJavaScriptで書かれたゲームを持っています。基本的には10秒タイマーを起動し、ユーザーが特定のボタンをクリックする回数を登録しますタイマーが経過します。ユーザーがボタンのクリック回数に影響を与えないようにする方法
コード仕組み:
ユーザがボタンをクリックすると、要素はpush
関数を使用して、アレイに追加され、その後、異なる機能は回数として配列の長さを返しますクリックした
これに伴う問題:ユーザは、開発ツールを開き、要素がクリックあたりのアレイに追加された回数を変える
場合、これは結果の結果を変更します。
私のアプローチ:私は行うことを決めた何
私はpush
機能を実行する前にしても、私はpush
機能を実行した後に、その後、彼らの違いを比較し、それが1
より大きいだ場合は、長さを格納することで、それは何かが正しくないことを意味します。これは私がコードに書き留めて、それを確認する前にユーザーが複数回プッシュすると気付かれなくなることを発見するまで、これは私の頭の中で働くように見えました。大脳の男よ、助けてください。
マイコード:
$('body').on('click', '.btn.z', function() {
// start listening
startCountingClicks()
})
var timerStarted = false;
var tc = [];
function startCountingClicks() {
$('.btn.z').html('ClickZed');
$('.Score').html('Your Score: '+gettc()+" clicks");
if (timerStarted == false) {
startTimer(10, $('#time'));
}
// user does multiple push before this function: startCountingClicks is called
var previous_length = tc.length; // get length before push
tc.push(1);
var new_length = tc.length; // get length after push
if (new_length - previous_length !== 1) {
console.log("fraud"); // this is supposed to catch a thief!!!
}
console.log(new_length+" "+previous_length);
timerStarted = true;
}
function gettc(){
// get number of clicks
return tc.length ;
}
完全にこれを壊すコード:
$('button').click(function(){tc.push(1); tc.push(1)})
編集:私はdevのツールから保護したくない
、それが機能すれば私はその方法に反対していません。私はちょうど私のクリックをカウントするより良い方法を得たい、devツールのコードを書くことによって影響を受けることができない方法です。
なぜあなたはdevツールから保護したいですか?これらのツールは、コードを開発する際のヒントを示しています。これらのツールでは、すべてのスクリプトを無効にして、代わりに何かを置くことができます。実際の検証を行うには、サーバー側のコードを使用してください。 – trincot
私は開発ツールから保護したくないので、私は自分のコードを壊さないように頼りにしたくありません。 – theOzmic
それは私の言いたいことです。誰かが 'console.log( 'あなたが勝った!10秒間に1000000回クリックした、あなたは驚いている')'と書くことができます。それで何が楽しいですか? – trincot