2012-02-27 113 views
2

我已經在這個論壇上通過了其他網絡遊戲的作弊問題,但我沒有得到我的問題的答案,這就是爲什麼我張貼在類似的標題下。如何防止網頁遊戲作弊?

這裏是問題:

我正在開發一個web爲基礎的遊戲,其中三個類似的箱子通過使用簡單的HTML顯示在網頁上。

<img src="box.jpg" /> 
<img src="box.jpg" /> 
<img src="box.jpg" /> 
現在使用jquery.path插件我正在旋轉的每場比賽的要求隨機路徑上,併爲這些箱子在動畫用戶需要通過單擊的標識中間有空格的位置結束的

三盒。

但是,如果用戶使用Firebug或Chrome網頁開發工具,那麼只需檢查dom的元素,他/她就可以輕鬆識別中間框的位置。

所以請給我建議解決這個問題。

P.S.

我主要是使用簡單的jquery動畫,因爲我想讓遊戲兼容老的瀏覽器,所以最好是在我的情況下使用canvas或css3動畫?他們會解決這種欺騙問題嗎?

+3

如果您依賴的是純粹的客戶端,那麼阻止它們的方法很少。如果你更多地談論基於瀏覽器的mmo,目前似乎有很多方法可以阻止它,那就是檢查服務器上的所有內容,但DOM位置等東西總是可用的,它基於web的性質發展。 – Henry 2012-02-27 10:39:43

+0

你可以做的最好的做法可能是充分混淆你的代碼,除了最熱心的作弊者之外,不會感到困擾。 – 2012-02-27 10:47:38

回答

4

嘗試考慮如果JavaScript關閉使用。儘管它可以通過JS調試器進行跟蹤,但學習使用調試器將不僅僅是查看源代碼或DOM樹,而是更高層次的知識。

構建一個具有私人範圍的對象。使用該對象創建您需要的3個圖像。將這3個圖像分配給該對象中的3個私有變量。只有那個物體知道哪個圖像是哪個。你甚至不需要給它們區分它的屬性,因爲你可以使用這3個私有變量在對象中跟蹤它們。

在我的例子中,我使用$ .data()這是可見的。雖然他們可以知道盒子的ID,但他們不知道閉合內部的變量target的值。

考慮隨機化target的值,並在中間放置任何具有該值的框。那樣的話,他們不會一直在跟蹤,同一個盒子裏。

var game = (function(){ 

    //set which box is the target 
    //they will never know this value 
    //i sugest including this in randomizing 
    var target = 1; 

    //storage variable for the boxes 
    var boxes = {}; 

    //retrieve data stored and check with target 
    var check = function(element){ 
     var boxID = $(element).data('boxID'); 

     //check if a match 
     if(boxID === target){ 
      alert('got me!'); 
     } else { 
      alert('not me!!!'); 
     } 

    } 

    //create 3 boxes and store them in boxes object 
    for(var i = 0; i < 3 ; i++){ 

     //create box HTML and store it in a variable 
     //notice that all boxes will have this very same HTML 
     var box = $('<img src="box.jpg" />'); 

     //store the box identifier using $.data() 
     //at least in this manner, you are not storing 
     //the id as an attribute 
     box.data('boxID',i); 

     //if your plugin looks like "element.path()" 
     //plug it to every box created 
     box.path({ 
      options:value.... 
     }); 

     //add handler for checking 
     box.on('click',function(){ 
      check(this); 
     }); 

     //store in the private variable 
     boxes['box'+ i] = box 

     //append box to the display, in this case, the body. 
     $('body').append(box); 
    } 

    //your "pathing" function 
    var randomize = function(){ 
     //do your random path stuff here 
     //access boxes using: boxes.box1, boxes.box2 and so on... 
     //they are jQuery objects already so you can use jQuery functions on them 
    }; 

    //return public accessible methods and functions 
    return { 
     randomize : randomize //expose the randomize function 
    } 

}()); 

在此之後,只需撥打game.randomize()做你的路的東西(因爲只有隨機公開可用的代碼)

tried logginggame對象還有div的,沒有真正的target的跡象。

+0

聽起來不錯..我會嘗試它,希望它能正常工作 – Peeyush 2012-02-27 11:01:37

+0

這只是理論上的代碼,從我的頭頂開始。可能不完整,但這個想法就在那裏。 – Joseph 2012-02-27 11:05:24

+0

我明白了你的觀點 – Peeyush 2012-02-27 11:45:07

相關問題