我正在尝试使用 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;
}