使用MVC/Javascript实现回合制网页游戏

Implementing Turn-based web game using MVC/Javascript

本文关键字:网页 游戏 实现 MVC Javascript 使用      更新时间:2023-09-26

我正在执行浏览器回合制游戏,使用javascript和asp.net MVC,将来可能会使用html5。

我有一些关于它的问题,因为我是很新的asp.net MVC和javascript:

  1. 我不知道如何在javascript和MVC之间进行交互,这意味着我如何才能使GUI不重新加载页面,而是将信息发送给使用它的服务器上的函数/操作,并相应地更新GUI。

    例如:点击一个按钮将调用服务器端函数,该函数将更新网站上的一些字段,而无需重新加载页面。

    当然,我想让javascript只负责GUI,所有的计算都将在服务器端进行,似乎:

    • 点击某物

    • 发送信息到服务器端功能

    • 计算和更新GUI

  2. 我有很多数据需要保存每个玩家在战斗期间我想知道保存这些数据最好的地方在哪里。

    我可能会有一个包含数据的战斗对象,这将访问数据库并使用javascript更新gui。

  3. 因为这是一款回合制游戏,所以我必须执行一个能够在玩家之间同步的系统。我认为最好的方法是在每个客户端上创建一个计时器,每隔2秒就会从数据库中获取信息,并在发生变化时更新GUI(游戏邦注:例如,其他玩家使用X类型的移动造成X伤害)。你有更好的解决办法吗?

谢谢。

是的,你需要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可以很快变成意大利面条代码!

我会研究javascript长轮询和服务器端异步处理-以便客户端立即更新服务器端发生的事情。java示例:http://www.playframework.org/documentation/1.2/asynchronous

要创建模型客户端,您可以查看backbone.js

顺便说一句,搜索asp.net ajax聊天应用程序可能会给你一些很好的客户端通信的起点