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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|