Accueil > > > [PHP5]RPG CREATOR VERSION [ALPHA]
[PHP5]RPG CREATOR VERSION [ALPHA]
Information sur la source
Description
Voici un moteur simple de déplacement sur une map. Simple, parce que je n'aiu pas tout implémenté encore...je ferai peut-être des mises à jour, sans doute même...à moins que je ne décide de créer mon jeu un de ces 4 ;-) Le principe est relativement simple. Ajax est utilisé pour les déplacements. Un objet omap gère la map elle-même. On peut jouer sur différents paramètres : avec ou sans personnage, modification de l'affichage etc... La version que je possède est un peu plus complète, mais je la mettrai plus tard ici. Je compte notamment permettre une gestion simple des objets, divers retours, et un affichage de map en 3d isométrique. J'ai codé en utilisant exprès diverses fonctionnalités afin de les montrer. En vrac : - syntaxe heredoc - utilisation des méthodes magiques __toString, __sleep, __wakeup - utilisation d'ajax sur 1 seule page ...
Source
- <?php
- /* *********************************************************************************************************************************************
- * CLASS OMAP
- *
- * @author johan <barbier_johan@hotmail.com>
- * @version 2006-01-26
- * @copyright : free to use, modify...do NOT sell. If you change this file, you'd be very nice to send me your changes :-)
- ***********************************************************************************************************************************************/
-
- class omap {
-
- /********************************************************************************************************
- * Propriétés
- ********************************************************************************************************/
-
- /**************
- * privées
- **************/
- private $aMap = array (); // tableau de la map
- private $aDisplayMap = array (); // tableau de la portion de map à afficher
- private $aDisplayOptions = array ( // tableau d'options d'affichage
- 'maxDisplay' => 5, // portion de la map à afficher. Ici, un carré de 5 * 5 cases
- 'tiles' => 48, // taille des cases (tiles) en pixels
- 'bgColor' => '#000000', // couleur de fond de la map - initialement, pour ujne option que j'ai enlevé depuis : le fog of war
- 'ext' => 'png' // extensions des images composant la map (tiles)
- );
- private $aGlobalOptions = array ( // tableau d'options globales
- 'perso' => false // utilisation du perso ou non. Pour mettre un perso, on remplacera false par l'url de son image
- );
- private $aPos = array ( // tableau de la position courante
- 'x' => 0, //coordonnée en x
- 'y' => 0 // coordonnée en y
- );
- private $aMax = array (); // tableau des bornes de la map
- private $sNav; // chaine contenant l'affichage de la navigation
-
- /***************
- * constantes
- ***************/
- const sMapDir = 'maps/'; // répertoire des maps
- const sTilesDir = 'tiles/'; // répertoire des tiles
- const sNavDir = 'nav/'; // répertoire des boutons de navigation
-
- /********************************************************************************************************
- * Constructeur
- * @Params mixed mMap : nom du fichier mod ou tableau mod
- ********************************************************************************************************/
- public function __construct ($mMap) {
- if (file_exists (self::sMapDir.$mMap)) {
- $aChaine = file (self::sMapDir.$mMap);
- foreach ($aChaine as $val) {
- $this -> aMap[] = str_split (trim ($val));
- }
- } else {
- return false;
- }
- $this -> aMax = array ('x' => count ($this -> aMap) - 1, 'y' => count ($this -> aMap[0]) - 1);
- }
-
- /********************************************************************************************************
- * Méthode init
- * @Params array aProps : tableau des propriétés à initialiser
- ********************************************************************************************************/
- private function init (array $aProps) {
- foreach ($aProps as $propName => $propValue) {
- $this -> $propName = $propValue;
- }
- }
-
- /********************************************************************************************************
- * Méthode setDisplay
- * permet de mettre à jour une option du tableau d'affichage
- * @Params array aOptions : tableau d'options, avec comme clef, un nom d'option valide
- * et comme valeur associée, la valeur voulue
- * @Return bool true/false
- ********************************************************************************************************/
- public function setDisplay (array $aOptions) {
- foreach ($aOptions as $clef => $valeur) {
- if (array_key_exists ($clef, $this -> aDisplayOptions)) {
- $this -> aDisplayOptions[$clef] = $valeur;
- }
- }
- }
-
- /********************************************************************************************************
- * Méthode setPerso
- * initialise l'url vers l'image du perso
- * @Params string sPath : chaîne représentant l'url de l'image
- * @Return bool false en cas d'échec, true en cas de succès
- ********************************************************************************************************/
- public function setPerso ($sPath) {
- $this -> aGlobalOptions['perso'] = $sPath;
- }
-
- /********************************************************************************************************
- * Méthode setPos
- * initialise la position de départ
- * @Params array aPos : tableau des coordonnées x et y de la position de départ
- * @Return bool false en cas d'échec
- ********************************************************************************************************/
- public function setPos (array $aPos) {
- if (count ($aPos) === 2) {
- foreach ($aPos as $clef => $val) {
- if (is_int ($val) && array_key_exists ($clef, $this -> aPos)) {
- $this -> aPos[$clef] = $val;
- }
- }
- } else {
- return false;
- }
- }
-
- /*******************************************************************************************************
- * Méthode get
- * permet de récupérer la valeur d'une ou plusieurs propriété(s) de la classe
- * On peut passer n'importe quel nombre de paramètres, sous la forme de chaînes ayant
- * pour valeur le nom d'une propriété EXISTANTE de la classe
- *******************************************************************************************************/
- public function get () {
- $aArgs = func_get_args();
- foreach ($aArgs as $clef => $arg) {
- if (isset ($this -> $arg)) {
- $aRetour[$arg] = $this -> $arg;
- }
- }
- if (isset ($aRetour) && is_array ($aRetour)) {
- return $aRetour;
- } else {
- return false;
- }
- }
-
- /********************************************************************************************************
- * Méthode getCharPos
- * permet de récupérer la position courante du personnage
- * @Return array
- ********************************************************************************************************/
- public function getCharPos () {
- return $this -> aPos;
- }
-
- /********************************************************************************************************
- * Méthode magique __toString
- * permet d'afficher la map si désiré
- * @Return string
- ********************************************************************************************************/
- public function __toString () {
- $sString = $this -> sNav;
- $width = $this -> aDisplayOptions['tiles'] * $this -> aDisplayOptions['maxDisplay'];
- if (false !== $this -> aGlobalOptions['perso']) {
- $sString .= '<div style="position: relative; top: '.$this -> aDisplayOptions['tiles'] * ceil($this -> aDisplayOptions['maxDisplay']/2).'px; left: '.$this -> aDisplayOptions['tiles'] * floor($this -> aDisplayOptions['maxDisplay']/2).'px;z-index: 1000"><img src="'.$this -> aGlobalOptions['perso'].'" alt="Avatar"/></div>';
- }
- foreach ($this -> aDisplayMap as $clef => $dump) {
- $sString .= <<<EOS
- <div style="background-color: {$this -> aDisplayOptions['bgColor']}; width: {$width}px;">
-
- EOS;
- foreach ($this -> aDisplayMap[$clef] as $clef2 => $img) {
- $sString .= '<img src="'.self::sTilesDir.$img.'.'.$this -> aDisplayOptions['ext'].'" alt="'.$img.'"/>';
- }
- $sString .= <<<EOS
- </div>
-
- EOS;
- }
- return $sString;
- }
-
- /********************************************************************************************************
- * Méthode getMove
- * intercepte le post envoyé par l'objet xmlhttp
- ********************************************************************************************************/
- public function getMove ($map, $fight = false) {
- if (isset ($_POST['dir']) && is_numeric ($_POST['dir'])) {
- $this -> setMove ($_POST['dir']);
- }
- $serialMap = base64_encode (serialize ($this -> aPos));
- $this -> setNavigation ($serialMap, $fight);
- }
-
- /********************************************************************************************************
- * Méthode setMove
- * permet de modifier la position courante sur la map
- * modifie la propriété $this -> aPos
- * calcul sur 8 directions
- ********************************************************************************************************/
- private function setMove ($dir) {
- $dir = intval ($dir);
- /**********
- * ouest
- **********/
- if ($dir === 4) {
- $this -> aPos['y'] -= 1;
- if ($this -> aPos['y'] < 0) {
- $this -> aPos['y'] = 0;
- }
- }
- /**********
- * est
- **********/
- elseif ($dir === 6) {
- $this -> aPos['y'] += 1;
- if ($this -> aPos['y'] > $this -> aMax['y']) {
- $this -> aPos['y'] = $this -> aMax['y'];
- }
- }
- /**********
- * nord
- **********/
- elseif ($dir === 8) {
- $this -> aPos['x'] -= 1;
- if ($this -> aPos['x'] < 0) {
- $this -> aPos['x'] = 0;
- }
- }
- /**********
- * nord ouest
- **********/
- elseif ($dir === 7) {
- $this -> aPos['x'] -= 1;
- $this -> aPos['y'] -= 1;
- if ($this -> aPos['x'] < 0) {
- $this -> aPos['x'] = 0;
- }
- if ($this -> aPos['y'] < 0) {
- $this -> aPos['y'] = 0;
- }
- }
- /**********
- * nord est
- **********/
- elseif ($dir === 9) {
- $this -> aPos['x'] -= 1;
- $this -> aPos['y'] += 1;
- if ($this -> aPos['x'] < 0) {
- $this -> aPos['x'] = 0;
- }
- if ($this -> aPos['y'] > $this -> aMax['y']) {
- $this -> aPos['y'] = $this -> aMax['y'];
- }
- }
- /**********
- * sud
- **********/
- elseif ($dir === 2) {
- $this -> aPos['x'] += 1;
- if ($this -> aPos['x'] > $this -> aMax['x']) {
- $this -> aPos['x'] = $this -> aMax['x'];
- }
- }
- /**********
- * sud ouest
- **********/
- elseif ($dir === 1) {
- $this -> aPos['x'] += 1;
- $this -> aPos['y'] -= 1;
- if ($this -> aPos['x'] > $this -> aMax['x']) {
- $this -> aPos['x'] = $this -> aMax['x'];
- }
- if ($this -> aPos['y'] < 0) {
- $this -> aPos['y'] = 0;
- }
- }
- /**********
- * sud est
- **********/
- elseif ($dir === 3) {
- $this -> aPos['x'] += 1;
- $this -> aPos['y'] += 1;
- if ($this -> aPos['x'] > $this -> aMax['x']) {
- $this -> aPos['x'] = $this -> aMax['x'];
- }
- if ($this -> aPos['y'] > $this -> aMax['y']) {
- $this -> aPos['y'] = $this -> aMax['y'];
- }
- }
- else {
- return false;
- }
- }
-
- /********************************************************************************************************
- * Méthode getDisplay
- * permet d'obtenir la portion de map à afficher
- * modifie la propriété $this -> aDisplay
- ********************************************************************************************************/
- public function getDisplay () {
- $minus = floor ($this -> aDisplayOptions['maxDisplay'] / 2);
- for ($i = - $minus; $i <= $minus; $i ++) {
- $aX[] = $this -> aPos['x'] + $i;
- $aY[] = $this -> aPos['y'] + $i;
- }
- foreach ($aX as $clefX => $valX) {
- foreach ($aY as $clefY => $valY) {
- if (isset ($this -> aMap[$valX][$valY])) {
- $this -> aDisplayMap[$clefX][$clefY] = $this -> aMap[$valX][$valY];
- } else {
- $this -> aDisplayMap[$clefX][$clefY] = 'blank';
- }
- }
- }
- }
-
- /********************************************************************************************************
- * Méthode setNavigation
- * met en place la navigation
- * seules 4 directions sont affichées.
- * vous devez modifier cette fonction pour afficher les 8 directions possibles
- * les valeurs à mettre dans l'appel de la fonction js sendMove sont définies par la
- * direction représentée sur un pavé numérique.
- * nord est par exemple aura la valeur 9.
- * De même, pour modifier les graphismes de la navigation, vous devez les modifier
- * directement ici, pour le moment.
- * @Return string sString : affichage html de la navigation
- ********************************************************************************************************/
- private function setNavigation ($serialMap, $fight = false) {
- $display=($fight === true)?'style="visibility:hidden;"':'';
- $dir = self::sNavDir;
- $this -> sNav = <<<EOS
-
- <div id="nav" {$display}><div style="margin-left: 10px;"><img src="{$dir}/up.png" onclick="sendMove (8, '{$serialMap}');" class="dir" alt="nord"/></div>
- <div><img src="{$dir}/left.png" onclick="sendMove (4, '{$serialMap}');" class="dir" alt="ouest"/><img src="{$dir}/right.png" onclick="sendMove (6, '{$serialMap}');" class="dir" alt="est"/></div>
- <div style="margin-left: 10px;"><img src="{$dir}/down.png" onclick="sendMove (2, '{$serialMap}');" class="dir" alt="sud"/></div></div>
-
- EOS;
- }
-
- }
- ?>
<?php
/* *********************************************************************************************************************************************
* CLASS OMAP
*
* @author johan <barbier_johan@hotmail.com>
* @version 2006-01-26
* @copyright : free to use, modify...do NOT sell. If you change this file, you'd be very nice to send me your changes :-)
***********************************************************************************************************************************************/
class omap {
/********************************************************************************************************
* Propriétés
********************************************************************************************************/
/**************
* privées
**************/
private $aMap = array (); // tableau de la map
private $aDisplayMap = array (); // tableau de la portion de map à afficher
private $aDisplayOptions = array ( // tableau d'options d'affichage
'maxDisplay' => 5, // portion de la map à afficher. Ici, un carré de 5 * 5 cases
'tiles' => 48, // taille des cases (tiles) en pixels
'bgColor' => '#000000', // couleur de fond de la map - initialement, pour ujne option que j'ai enlevé depuis : le fog of war
'ext' => 'png' // extensions des images composant la map (tiles)
);
private $aGlobalOptions = array ( // tableau d'options globales
'perso' => false // utilisation du perso ou non. Pour mettre un perso, on remplacera false par l'url de son image
);
private $aPos = array ( // tableau de la position courante
'x' => 0, //coordonnée en x
'y' => 0 // coordonnée en y
);
private $aMax = array (); // tableau des bornes de la map
private $sNav; // chaine contenant l'affichage de la navigation
/***************
* constantes
***************/
const sMapDir = 'maps/'; // répertoire des maps
const sTilesDir = 'tiles/'; // répertoire des tiles
const sNavDir = 'nav/'; // répertoire des boutons de navigation
/********************************************************************************************************
* Constructeur
* @Params mixed mMap : nom du fichier mod ou tableau mod
********************************************************************************************************/
public function __construct ($mMap) {
if (file_exists (self::sMapDir.$mMap)) {
$aChaine = file (self::sMapDir.$mMap);
foreach ($aChaine as $val) {
$this -> aMap[] = str_split (trim ($val));
}
} else {
return false;
}
$this -> aMax = array ('x' => count ($this -> aMap) - 1, 'y' => count ($this -> aMap[0]) - 1);
}
/********************************************************************************************************
* Méthode init
* @Params array aProps : tableau des propriétés à initialiser
********************************************************************************************************/
private function init (array $aProps) {
foreach ($aProps as $propName => $propValue) {
$this -> $propName = $propValue;
}
}
/********************************************************************************************************
* Méthode setDisplay
* permet de mettre à jour une option du tableau d'affichage
* @Params array aOptions : tableau d'options, avec comme clef, un nom d'option valide
* et comme valeur associée, la valeur voulue
* @Return bool true/false
********************************************************************************************************/
public function setDisplay (array $aOptions) {
foreach ($aOptions as $clef => $valeur) {
if (array_key_exists ($clef, $this -> aDisplayOptions)) {
$this -> aDisplayOptions[$clef] = $valeur;
}
}
}
/********************************************************************************************************
* Méthode setPerso
* initialise l'url vers l'image du perso
* @Params string sPath : chaîne représentant l'url de l'image
* @Return bool false en cas d'échec, true en cas de succès
********************************************************************************************************/
public function setPerso ($sPath) {
$this -> aGlobalOptions['perso'] = $sPath;
}
/********************************************************************************************************
* Méthode setPos
* initialise la position de départ
* @Params array aPos : tableau des coordonnées x et y de la position de départ
* @Return bool false en cas d'échec
********************************************************************************************************/
public function setPos (array $aPos) {
if (count ($aPos) === 2) {
foreach ($aPos as $clef => $val) {
if (is_int ($val) && array_key_exists ($clef, $this -> aPos)) {
$this -> aPos[$clef] = $val;
}
}
} else {
return false;
}
}
/*******************************************************************************************************
* Méthode get
* permet de récupérer la valeur d'une ou plusieurs propriété(s) de la classe
* On peut passer n'importe quel nombre de paramètres, sous la forme de chaînes ayant
* pour valeur le nom d'une propriété EXISTANTE de la classe
*******************************************************************************************************/
public function get () {
$aArgs = func_get_args();
foreach ($aArgs as $clef => $arg) {
if (isset ($this -> $arg)) {
$aRetour[$arg] = $this -> $arg;
}
}
if (isset ($aRetour) && is_array ($aRetour)) {
return $aRetour;
} else {
return false;
}
}
/********************************************************************************************************
* Méthode getCharPos
* permet de récupérer la position courante du personnage
* @Return array
********************************************************************************************************/
public function getCharPos () {
return $this -> aPos;
}
/********************************************************************************************************
* Méthode magique __toString
* permet d'afficher la map si désiré
* @Return string
********************************************************************************************************/
public function __toString () {
$sString = $this -> sNav;
$width = $this -> aDisplayOptions['tiles'] * $this -> aDisplayOptions['maxDisplay'];
if (false !== $this -> aGlobalOptions['perso']) {
$sString .= '<div style="position: relative; top: '.$this -> aDisplayOptions['tiles'] * ceil($this -> aDisplayOptions['maxDisplay']/2).'px; left: '.$this -> aDisplayOptions['tiles'] * floor($this -> aDisplayOptions['maxDisplay']/2).'px;z-index: 1000"><img src="'.$this -> aGlobalOptions['perso'].'" alt="Avatar"/></div>';
}
foreach ($this -> aDisplayMap as $clef => $dump) {
$sString .= <<<EOS
<div style="background-color: {$this -> aDisplayOptions['bgColor']}; width: {$width}px;">
EOS;
foreach ($this -> aDisplayMap[$clef] as $clef2 => $img) {
$sString .= '<img src="'.self::sTilesDir.$img.'.'.$this -> aDisplayOptions['ext'].'" alt="'.$img.'"/>';
}
$sString .= <<<EOS
</div>
EOS;
}
return $sString;
}
/********************************************************************************************************
* Méthode getMove
* intercepte le post envoyé par l'objet xmlhttp
********************************************************************************************************/
public function getMove ($map, $fight = false) {
if (isset ($_POST['dir']) && is_numeric ($_POST['dir'])) {
$this -> setMove ($_POST['dir']);
}
$serialMap = base64_encode (serialize ($this -> aPos));
$this -> setNavigation ($serialMap, $fight);
}
/********************************************************************************************************
* Méthode setMove
* permet de modifier la position courante sur la map
* modifie la propriété $this -> aPos
* calcul sur 8 directions
********************************************************************************************************/
private function setMove ($dir) {
$dir = intval ($dir);
/**********
* ouest
**********/
if ($dir === 4) {
$this -> aPos['y'] -= 1;
if ($this -> aPos['y'] < 0) {
$this -> aPos['y'] = 0;
}
}
/**********
* est
**********/
elseif ($dir === 6) {
$this -> aPos['y'] += 1;
if ($this -> aPos['y'] > $this -> aMax['y']) {
$this -> aPos['y'] = $this -> aMax['y'];
}
}
/**********
* nord
**********/
elseif ($dir === 8) {
$this -> aPos['x'] -= 1;
if ($this -> aPos['x'] < 0) {
$this -> aPos['x'] = 0;
}
}
/**********
* nord ouest
**********/
elseif ($dir === 7) {
$this -> aPos['x'] -= 1;
$this -> aPos['y'] -= 1;
if ($this -> aPos['x'] < 0) {
$this -> aPos['x'] = 0;
}
if ($this -> aPos['y'] < 0) {
$this -> aPos['y'] = 0;
}
}
/**********
* nord est
**********/
elseif ($dir === 9) {
$this -> aPos['x'] -= 1;
$this -> aPos['y'] += 1;
if ($this -> aPos['x'] < 0) {
$this -> aPos['x'] = 0;
}
if ($this -> aPos['y'] > $this -> aMax['y']) {
$this -> aPos['y'] = $this -> aMax['y'];
}
}
/**********
* sud
**********/
elseif ($dir === 2) {
$this -> aPos['x'] += 1;
if ($this -> aPos['x'] > $this -> aMax['x']) {
$this -> aPos['x'] = $this -> aMax['x'];
}
}
/**********
* sud ouest
**********/
elseif ($dir === 1) {
$this -> aPos['x'] += 1;
$this -> aPos['y'] -= 1;
if ($this -> aPos['x'] > $this -> aMax['x']) {
$this -> aPos['x'] = $this -> aMax['x'];
}
if ($this -> aPos['y'] < 0) {
$this -> aPos['y'] = 0;
}
}
/**********
* sud est
**********/
elseif ($dir === 3) {
$this -> aPos['x'] += 1;
$this -> aPos['y'] += 1;
if ($this -> aPos['x'] > $this -> aMax['x']) {
$this -> aPos['x'] = $this -> aMax['x'];
}
if ($this -> aPos['y'] > $this -> aMax['y']) {
$this -> aPos['y'] = $this -> aMax['y'];
}
}
else {
return false;
}
}
/********************************************************************************************************
* Méthode getDisplay
* permet d'obtenir la portion de map à afficher
* modifie la propriété $this -> aDisplay
********************************************************************************************************/
public function getDisplay () {
$minus = floor ($this -> aDisplayOptions['maxDisplay'] / 2);
for ($i = - $minus; $i <= $minus; $i ++) {
$aX[] = $this -> aPos['x'] + $i;
$aY[] = $this -> aPos['y'] + $i;
}
foreach ($aX as $clefX => $valX) {
foreach ($aY as $clefY => $valY) {
if (isset ($this -> aMap[$valX][$valY])) {
$this -> aDisplayMap[$clefX][$clefY] = $this -> aMap[$valX][$valY];
} else {
$this -> aDisplayMap[$clefX][$clefY] = 'blank';
}
}
}
}
/********************************************************************************************************
* Méthode setNavigation
* met en place la navigation
* seules 4 directions sont affichées.
* vous devez modifier cette fonction pour afficher les 8 directions possibles
* les valeurs à mettre dans l'appel de la fonction js sendMove sont définies par la
* direction représentée sur un pavé numérique.
* nord est par exemple aura la valeur 9.
* De même, pour modifier les graphismes de la navigation, vous devez les modifier
* directement ici, pour le moment.
* @Return string sString : affichage html de la navigation
********************************************************************************************************/
private function setNavigation ($serialMap, $fight = false) {
$display=($fight === true)?'style="visibility:hidden;"':'';
$dir = self::sNavDir;
$this -> sNav = <<<EOS
<div id="nav" {$display}><div style="margin-left: 10px;"><img src="{$dir}/up.png" onclick="sendMove (8, '{$serialMap}');" class="dir" alt="nord"/></div>
<div><img src="{$dir}/left.png" onclick="sendMove (4, '{$serialMap}');" class="dir" alt="ouest"/><img src="{$dir}/right.png" onclick="sendMove (6, '{$serialMap}');" class="dir" alt="est"/></div>
<div style="margin-left: 10px;"><img src="{$dir}/down.png" onclick="sendMove (2, '{$serialMap}');" class="dir" alt="sud"/></div></div>
EOS;
}
}
?>
Conclusion
Je n'ai mis comme source texte que l'objet omap. Le reste du code est dans le zip :-)
Historique
- 26 janvier 2006 17:35:22 :
- Modifications mineures et ajouts de quelques commentaires supplémentaires
- 30 janvier 2006 16:43:14 :
- ajout d'un nouvel objet oevents.
Permet de générer des évènements sur la map (pour l'instant, purement descriptifs). Donne aussi un exemple de l'interaction possible avec le moteur.
- 30 janvier 2006 17:05:31 :
- Petite modification sur le fichier index.php : un commentaire mal placé ;-)
- 31 janvier 2006 14:21:26 :
- j'ai viré les méthodes __sleep () et __wakeup-), ainsi que la sérialisation de l'objet. ON passe cette fois TOUJOURS par une instanciation normale, et on relit le fichier mod de la map. EN fait je me suis rendu compte que c'était beaucoup plus rapide ainsi, et que l'écart entre l'ancienne méthode et celle-ci se creusait avec la taille de la map. On ne sérialise plus que la position de l'avatar.
Ajout d'une nouvelle capture aussi.
J'ai néanmoins laissé l'ancienne classe et l'ancien index.php : omap.cls_.php et index_.php
- 02 février 2006 11:32:24 :
- Correction d'un GROS bug que je n'avais pas vu. Je renvoyais dans la div 'map' toute ma page. J'ai corrigé en réécrivant dans le body, en attendant de faire mieux (document.innerHTML ne fonctionnait pas). Puisqu'on gère tout sur la même page, la même page renvoyait tout le html, évidemment, donc je multipliais mon contenu à chaque déplacement...
Mises à jours mineurs aussi : ajout d'un header et d'un footer, d'une css, etc...
- 01 mars 2006 15:33:23 :
- Grosse mise à jour : j'ai ajouté un début de moteur de combat dynamique. Pour le moment, pas d'implications pour le personnage :-) C'est juste un aperçu : on se balade sur la carte, on rencontre des monstres, on combat (on peut pour le moment juste taper, et se soigner). Les classes de personnages et de monstres sont aussi en début d'implémentation : une interface icharacter, une classe abstraite ocharacter, une classe oavatar étendant ocharacter, et une classe ostreum étendant ocharacter aussi pour les monstres (reste à faire un tas d'ajout, c'est juste la base là, et à créer différentes classes d'avatars et de monstres).
- 02 mars 2006 11:02:08 :
- ajout d'une doc créée avec mon pplication ClassFuncDoc (http://www.phpcs.com/codes/PHP5-CLASSE-DOCUMENTATION-CLASSES-FONCTIONS_35950.aspx) accessible dans docs/francais/index.html.
Modification des classes de personnages/monstres, et de l'interfaace de combat.
- 02 mars 2006 17:21:44 :
- Petites modifs générales
- 07 mars 2006 15:24:53 :
- Quelques ajouts
- 23 mars 2006 15:22:33 :
- Petit ajout pour plus tard : la classe xmlserialize
- 23 mars 2006 16:34:26 :
- bug fixing
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
2 prob dans une demarche de creation de moteur de jeu (jdr) php [ par testetrtr ]
salut a tous j'ai besoin d'aide dans deux choses: voila , je suis en train de cree un moteur de jeu (jdr) en php /sql . mais je bloque dans 2 e
moteur de recherche AJAX [ par djlghoul ]
j'ai un site web mais j'aimerai bien l'organiser parceque il est totalement riche en tout les modules et les composants parmi eux moteur de recherche
moteur de recherche simple [ par donhatem ]
Bonjour, je suis un peu novice en programmation, je veux que vous m'aidiez ou vous me donner quelque inforamtions : je cherche à créer un petit moteur
Api Google Maps ok en local mais pas en online [ par prachou ]
Bonjour à tous ! Après avoir parcouru en vain la toile je me décide a créer un post pour mon problème auquel je n'ai toujours trouvé aucune solution.
pb API google map et bdd php/sql [ par Anthosrc ]
Bonjour à tous, Je souhaite intégrer dans mon site un affichage de résultats d'un formulaire dans l'api google map. Voilà mon code :[cpp]<?php
persistance et passage d'objets en POO ??? [ par lolymeupy ]
Bonjour, j'ai déjà fait de la POO, mais pas en Php, et je ne sais pas trop comment gérer la persistance et la transmission des objets. Je sais qu'on p
GOOGLE MAP ITINERAIRE API [ par lounkokobi270987 ]
BonjourQuelqu'un saurait t'il ou trouver l' API de google map et comment tracé un itinérraire grace a deux chaine de caractères contenant les destinat
Debutant en Ajax [ par TheGorgo ]
Bonjour, Je cherche de l'aide pour un script en ajax. J'ai cherché des tutoriaux un peu partout, mais je ne comprends toujours pas. Je pense que ce q
Validation formulaire anti moteur par recopie d'un texte [ par deud5 ]
Bonjour,Je voudrais créer un espace membre pour mon site, avec lors de l'inscription d'un utilisateur, une validation par recopie d'un mot qui se met
coordonée google map et earth??? tres urgent [ par lassad_haddaji ]
salut a tous!jai un probleme urgent pour finir mon pfe, mon probleme est le suivant:j'enrgistre les coordonnées(latitude et longitude) de google map d
|
Derniers Blogs
PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|