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
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|