Carte pour un rpg en php, déplacement via javascript

sff

WRInaute impliqué
Bonjour,

je suis en train de créer un rpg en php, et j'ai un petit problème. Je voudrais que le personnage se déplace instantanément sur la carte avec un petit script js. Un peu à la manière d'un tchat ajax ou l'on affiche le texte avant de l'entrer dans la base de donnée.

Voici le script de la carte (il fonctionne) :

Code:
$mapquery = mysql_query(sprintf("SELECT id, size_x, size_y  FROM %s_map WHERE id='%d' LIMIT 1", $mysql->pref, mysql_real_escape_string($userrow['map'])));
$maprow = mysql_fetch_assoc($mapquery);

$x_start = -$maprow['size_x'];
$x_end = $maprow['size_x'];
$y_start = -$maprow['size_y'];
$y_end = $maprow['size_y'];

$elementsquery = mysql_query(sprintf("SELECT type, avatar, id_element, latitude, longitude FROM %s_map_elements WHERE latitude <= %d AND latitude >= %d AND longitude <= %d AND longitude >= %d AND map='%d'", $mysql->pref, mysql_real_escape_string($y_end), mysql_real_escape_string($y_start), mysql_real_escape_string($x_end), mysql_real_escape_string($x_start), mysql_real_escape_string($maprow['id'])));

while($elementsrow = mysql_fetch_assoc($elementsquery) ) {	

	$block[$elementsrow['latitude']][$elementsrow['longitude']] = 1;
	
}

$debutx = $x_start;

$width = 64*$maprow['size_x']+32;
$height = 64*$maprow['size_y']+32;

$map ='<div style="margin:auto; width:'.$width.'px">';

while($y_end >= $y_start) {
	
	$map .='<div style="height:32px">';
	
	while($x_start <= $x_end) {
		
		//bouton pour se déplacer.
		$right =(empty($block[$userrow['latitude']][$userrow['longitude']+1]) && $x_start==$userrow['longitude']+1 && $y_end==$userrow['latitude'])? '<input name="right" type="submit" onclick="?">' : null;
		
		$player =($x_start==$userrow['longitude'] && $y_end==$userrow['latitude'])? '<img src="images/avatars/carte/'.$userrow['avatar'].'.gif" alt="">' : null;
		
		$map .='<div class="map">'.$player.$right.'</div>';	
		
		$x_start++;
	}
	
	$map .='</div>';

	$x_start = $debutx;
	$y_end--;
}

$map .='</div>';

echo $map;

ce qui donne ceci :

mapxp.jpg


Le bouton pour se déplacer est ceci :

Code:
$right =(empty($block[$userrow['latitude']][$userrow['longitude']+1]) && $x_start==$userrow['longitude']+1 && $y_end==$userrow['latitude'])? '<input name="right" type="submit" onclick="?">' : null;

IL faudrait donc que lorsque l'on clique sur ce bouton, le personnage se déplace instantanément sur la carte.

Le script js pour un t'chat ajax est comme ca :

Code:
function submit(page)
{
var xhr = getXMLHttpRequest();

var content = encodeURIComponent(document.getElementById('content').value);
document.getElementById('content').value = "";
 
xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                document.getElementById(page).innerHTML = xhr.responseText;
        }
};
 
xhr.open("POST", "?do="+page, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("content="+content);

}

Dans ce code on affiche dans le HTML avant de l'entrer dans la base de donnée, soit un temps de réponse quasi nul. Je voudrais reprendre le même principe pour la carte.

Mais comment ?

Pouvez vous m'aider ?

Merci
 

aladdin

WRInaute passionné
+1 pour jQuery

sinon chapeau pour le projet, je sais que c'est hyper compliqué de développer uns telle chose en PHP ;)


EDIT : Je viens de jetter un oeil sur APE Server, c'est tout simplement GEANT ! ca me donne déjà des idées :D
 

Robinson

WRInaute passionné
J'ai développé un moteur de jeu semblable pendant deux mois :)
On peut créer des maps et les mapper très facilement, y insérer des objets, etc...

Sauf que j'ai jamais lancé le jeu ^^

ça m'a plu, j'ai appris pleins de tits trucs, mais les RPG, ça soule au bout d'un moment, faut être motivé pour le développer constamment, et puis c'est loin d'être rentable, faut un serveur solide derrière (ou plutôt des serveurs).
Bref, j'ai un joli projet avec plus de 150 maps (de mémoire).
ça intéresse quelqu'un ?
combien êtes-vous prêt à mettre ? XD

(non j'aime pas vendre mes créations, je garde tjrs tout pour moi ^^)
 

pprem

WRInaute discret
Je dirais JQuery aussi

Mais en fait tu devrais directement basculer sur le Canvas du HTML5 et travailler en JS comme on le ferait directement sur un ordi ou une console. Le serveur ne doit servir que pour stocker les informations sur les personnages et générer leurs interactions, jamais pour autre chose : tout les mouvements et l'affichage doit se gérer au niveau du navigateur.

J'avais vu passer des kits de développement de jeux en JS, mais me souviens plus où, c'était pas de l'open source mais une licence payante et le truc n'était pas fini, en revanche les exemples de jeux présentés étaient tout simplement géniaux (genre un jeu d'arcade avec sons et tout ce qu'il faut de mouvements).

En tout cas c'est une bonne idée de se lancer là-dedans. Tu as un graphiste à disposition ou tu fais tout toi-même ?
 

spout

WRInaute accro
pprem a dit:
J'avais vu passer des kits de développement de jeux en JS, mais me souviens plus où, c'était pas de l'open source mais une licence payante et le truc n'était pas fini, en revanche les exemples de jeux présentés étaient tout simplement géniaux (genre un jeu d'arcade avec sons et tout ce qu'il faut de mouvements).
Je me souviens de ceci: http://impactjs.com/ ?

Sinon d'autres pistes:
http://raphaeljs.com/
http://processingjs.org/
 

pprem

WRInaute discret
excellent ! pour moi, le HTML5, c'est vraiment l'avenir du jeu et toutes ces librairies contribuent à chaque fois à me le faire penser.

Voici celle que j'avais noté :
http://www.effectgames.com/effect/
et apparemment le projet est en production maintenant
 

Discussions similaires

Haut