-1

我正在尝试使用 javascript 和 php 制作一个小型在线游戏。

关键是我不想刷新页面。我想让它成为一种“实时游戏”,但我遇到了一个严重的问题。我成功创建了一个数据库,但我想在玩家每次在地图上移动时更新他的位置。

我只想要某种 AJAX/javascript,每次玩家移动时,它都会将数据库中的玩家位置值更改为新的;我不想使用按钮、表单或其他页面;我只是想要一些帮助,制作一个每 30 秒将玩家位置更新到 MySQL 数据库的脚本。

这是带有玩家移动的javascript

//player movement here
    engine.player.move = function(direction)
    {

       var index, x, y;

       index = x = y = 0;

       engine.keyboard.canInput = false;

       switch(direction)
       {
          case 'up':    index = 0;  y =  1;     break;
          case 'right': index = 3;  x = -1;     break;
          case 'left':  index = 9;  x =  1;     break;
          case 'down':  index = 6;  y = -1;     break;

       }

       var toX = engine.viewport.x + (engine.screen.tilesX / 2 - 0.5) - x;
       var toY = engine.viewport.y + (engine.screen.tilesY / 2 - 0.5) - y;
       var toTile = engine.map.get(toX, toY);

       if(engine.tile.hasProperty(toTile, 'solid', 1) ||
          engine.npc.isNpcAt(toX, toY))
       {
          engine.keyboard.canInput = true;
       }else{
          engine.viewport.playerOffsetX = x * Math.ceil(5 / 16 * engine.tileSize);
          engine.viewport.playerOffsetY = y * Math.ceil(5 / 16 * engine.tileSize);

          setTimeout(engine.player.animate, engine.player.speed / 2);
          setTimeout(engine.player.reset, engine.player.speed);
       }

       engine.player.spriteIndex = index;
       engine.draw();
       engine.output('player  walks ' + toX + 'x' + toY + 'y');

    };

这是我要进行mysql更新的地方

   switch(direction)
       {
          case 'up':    index = 0;  y =  1; if(Y++){update player Y+1}      break;
          case 'right': index = 3;  x = -1;     break;
          case 'left':  index = 9;  x =  1;     break;
          case 'down':  index = 6;  y = -1;     break;

       }
4

3 回答 3

0

我正在考虑在 php 中创建一个 GET 位置变量,以从 javascript 中“获取”用户位置,但我不确定这是否可行。

于 2013-04-30T10:46:56.070 回答
0

好的,永远不要在没有 jquery 的情况下开始新的一天。试试post功能。我无法为您提供完整的解决方案,但这里有一个关键:

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<script>
  function userMove() {
     var data = {
         yourData1: value,
         ...
     }

     $.ajax({
        type: "POST",
        url: your_file.php,
        data: data,
        success: success,
        dataType: dataType
     });
  }
</script>

jQuery $.post

于 2013-04-30T00:06:40.863 回答
0

看看这个例子

SELECT/FROM/WHERE您可以使用UPDATE/SET/WHERE而不是使用通用查询表单。

于 2013-04-30T00:07:18.567 回答