2011-12-16 81 views
1

我正在實現基於瀏覽器回合的遊戲,使用javascript和asp.net MVC,未來可能會使用html5。使用MVC/Javascript實現基於回合的網頁遊戲

我有一個關於它的一些問題,因爲我是相當新的ASP.NET MVC和javascript:

  1. 我不知道我該怎麼javascript和MVC, 之間的互動,這意味着如何我製作了一個不重新加載頁面的GUI,但是在使用它的服務器上發送給出的函數/動作的信息並相應地更新GUI。

    例如:單擊按鈕將調用服務器端函數,該函數將更新網站上的某些字段而不重新加載頁面。

    自然,我想打的JavaScript負責的僅僅是GUI, 和所有的計算將在服務器端,它似乎是:

    • 點擊東西

    • 發送信息斷絕端函數

    • 計算並更新GUI

  2. 在戰鬥中我需要爲每個玩家保存大量數據 ,我想知道最好的地方是什麼保存這些數據。

    我可能會有一個包含數據的Battle對象,它將訪問數據庫並使用javascript更新gui。

  3. 既然它是一個轉動的基礎遊戲,我將不得不實現一個系統,將在玩家之間進行同步。我認爲最好的方法是在每個客戶端上創建一個計時器,每2秒鐘會從數據庫獲取信息,並在相應情況發生變化時更新GUI(例如,其他玩家用X類型完成移動移動造成X點傷害)。你有更好的解決方案嗎?

謝謝。

+2

聽起來像你需要查找AJAX。 – thedaian 2011-12-16 23:13:54

回答

3

是的,你需要Ajax和可能的一些JavaScript庫來協助你的單頁應用程序。您可以通過使用jQuery開始您的原型習慣Ajax方式:

<script type="text/javascript"> 
    $(function() { 
     $('#battleHitButton').click(function(e) { 
      $.ajax({ 
       type: 'POST', 
       url: 'Battle/Hit', 
       data: { 'opponent': 'someName', 'bonus': 42 }, 
       success: function(data) { 
        $('#result').html(data); 
        // do some other stuff after hit 
       } 
      }); 
     }); 
    }); 
</script> 

而在後端你的MVC應用程序需要在控制器的行動支持/Battle/Hit URL

public class BattleController : Controller 
{ 
    [HttpPost] 
    public ActionResult Hit(BattleModel model) 
    { 
     string whoToHit = model.opponent; 
     int bonusDamage = model.bonus; 
     // do battle, persist to database, etc 
    } 
} 

這絕不是一個完整的解決方案。但是,它應該讓你開始思考MVC和JavaScript/jQuery。一旦你掌握了它,我會強烈建議你在應用程序變得越來越複雜的時候去探索一些替代jQuery的東西。 jQuery.ajax可以很快變成意大利麪代碼!

1

我會研究javascript長輪詢和服務器端異步處理 - 以便客戶端立即更新服務器端發生的事情。在Java示例:http://www.playframework.org/documentation/1.2/asynchronous

對於創建模型客戶端,你可以看看Backbone.js的

順便說一句,google搜索asp.net ajax的聊天應用程序可以給你的客戶溝通一些很好的出發點

相關問題