2011-12-16 60 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的聊天应用程序可以给你的客户沟通一些很好的出发点