index.php
<?php
session_start();
for ($y=0; $y<=10; $y++){
for ($x=0; $x<=10; $x++){
if (isset($_SESSION['x'.$x.'y'.$y])){
unset($_SESSION['x'.$x.'y'.$y]);
}
}
}
if (isset($_SESSION['pos'])){
unset($_SESSION['pos']);
}
session_register('pos');
for ($y=0; $y<=10; $y++){
for ($x=0; $x<=10; $x++){
$mapelements.="<div style='float:left; position:relative; left:".($x*50)."; top:".($y*50)."; width:50px; height:50px; background-image:url(img/no.gif);' id='x".$x."y".$y."'></div>";
session_register('x'.$x.'y'.$y);
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<script language="javascript" type="text/javascript" src="code.js"></script>
</head>
<body onLoad="setInterval('loadmap()', 200)">
<input type="text" name="user" id="user" value="Jekel">
<input id="pos" type="text" value="">
<br>
<input style="margin-left:25px;" type="submit" name="up" id="up" value="Up" onClick="moveto('up')"><br>
<input type="submit" name="left" id="left" value="Left" onClick="moveto('left')">
<input type="submit" name="right" id="right" value="Right" onClick="moveto('right')"><br>
<input style="margin-left:15px;" type="submit" name="down" id="down" value="Down" onClick="moveto('down')">
<table width="550" height="550" border="1" align="center" cellpadding="1" cellspacing="1">
<tr>
<td align="left" valign="top" bgcolor="#FFFFCC"><div style='float:left; position:relative; left:0; top:0; width:550px; height:550px;'><?php echo $mapelements;?></div></td>
</tr>
</table>
</body>
</html>
code.js
function loadmap(){
var username = document.getElementById('user').value;
var map;
var pos;
var x;
var y;
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("GET", "server.php?un=" + username);
XMLHttpRequestObject.onreadystatechange = function() {
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
var xmlDocument = XMLHttpRequestObject.responseXML;
var xmlResp = xmlDocument.documentElement;
try{
pos = xmlResp.getElementsByTagName('pos').item(0).firstChild.data;
//if(document.getElementById('pos').value!= pos){
document.getElementById('pos').value = pos;
//}
}catch(e){}
for(x=0; x<=10; x++){
for(y=0; y<=10; y++){
try{
map = xmlResp.getElementsByTagName('x'+x+'y'+y).item(0).firstChild.data;
document.getElementById('x'+x+'y'+y).style.backgroundImage = "url(img/" + map + ")";
}catch(e){}
}
}
}
}
XMLHttpRequestObject.send(null);
}
}
function moveto(storona){
var username = document.getElementById('user').value;
var XMLHttpRequestObjectMove = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObjectMove = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObjectMove = new ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObjectMove) {
XMLHttpRequestObjectMove.open("GET", "server.php?un=" + username + "&move=" + storona);
XMLHttpRequestObjectMove.send(null);
}
}
server.php
<?php
session_start();
header('Content-Type: text/xml; charset=windows-1251');
require_once "config.php";
mysql_connect($host, $userdb, $passdb);
mysql_select_db($database);
$username = $_GET["un"];
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE user='".$username."'"));
list($userx, $usery) = explode('y', substr($user['cord'], 1));
if($_GET['move']=="right"){
mysql_query("UPDATE users SET cord='x".($userx+1)."y".$usery."' WHERE user='".$username."'");
}else if($_GET['move']=="left"){
mysql_query("UPDATE users SET cord='x".($userx-1)."y".$usery."' WHERE user='".$username."'");
}else if($_GET['move']=="up"){
mysql_query("UPDATE users SET cord='x".$userx."y".($usery-1)."' WHERE user='".$username."'");
}else if($_GET['move']=="down"){
mysql_query("UPDATE users SET cord='x".$userx."y".($usery+1)."' WHERE user='".$username."'");
}
for ($y=-5;$y<6;$y++){
for ($x=-5;$x<6;$x++){
$mybase = mysql_fetch_assoc(mysql_query("SELECT * FROM map WHERE cord='x".($userx+$x)."y".($usery+$y)."'"));
if($mybase["img"]!=NULL && $mybase["img"]!=""){
if($_SESSION[$mybase["cord"]]!=$mybase["img"]){
$all.="<".$mybase["cord"].">".$mybase["img"]."</".$mybase["cord"].">";
$_SESSION[$mybase["cord"]]=$mybase["img"];
}
}
}
}
//Вывод на экран
//if($all!=NULL && $all!=""){
echo '<?xml version="1.0" ?>';
echo '<map>';
echo $all;
if($_SESSION['pos']!=$user["cord"]){
echo "<pos>".$user["cord"]."</pos>";
$_SESSION['pos']=$user["cord"];
}
echo '</map>';
//}
?>