JeuWeb - Crée ton jeu par navigateur
Structure de mon jeu - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Structure de mon jeu (/showthread.php?tid=3934)



Structure de mon jeu - comg - 28-04-2009

Bonjour à tous.

Voilà je vais vous exposer ma façon de faire pour mon jeu, et j'apprecierai d'avoir votre avis sur ma "structure".

Je précise que je ne code pas du tout en POO.

Je vais essayer d'expliquer "simplement" ma methode. N'hésitez pas à me demander d'expliciter des lignes et/ou de vous montrer ce que contient un fichier...

---

Structure Générale (Index)
Code PHP :
<?php 
// Session Start + Include de mes lib de base
// Connexion à la BDD
// Vérification si demande de connexion / deconnexion

// Si le joueur est connecté on charge le moteur de jeu, sinon on charge le moteur hors_jeu

// HTML avec include d'un fichier d'affichage en PHP

---

Affichage :
En gros un fichier PHP qui récupère un tableau $affichage et le décompose.
Pour simplifier cela donne ça. (Bien sûr avec des tests pour chaque "div" pour savoir s'il y a de quoi le remplir...)
Code PHP :
<?php 
echo '<div id="tete">' . $affichage['tete'] . '</div>';
echo
'<div id="titre">' . $affichage['titre'] . '</div>';
echo
'<div id="contenu">' . $affichage['contenu'] . '</div>';

---

Moteur de jeu
Code PHP :
<?php 
// On récupère toutes les infos du joueur depuis la BDD qu'on stock dans des tableaux
// $infos_joueur, $stats_joueur, $carac_joueur, $localisation_joueur...

// On regarde si un $_GET['do'] existe et si son contenu correspond à un controleur, on inclut le controleur en question. Sinon un controleur par défaut.

// On met à jour la BDD avec le contenu des tableaux (qui ont put être modifiés par les controleurs)

---

Quelques fonctions de mes librairies
Code PHP :
<?php 
// Une fonction qui permet de récuperer rapidement des informations sur le joueur (là les exemples sont simplifié, mais cela doit aussi me permettre de récuperer des infos tels que 'arme_equipe_main_droite' ou 'experience_restante_avant_prochain_lvl' avec des traitements...)
function val($val)
{
global
$infos_joueur;
switch(
$val)
{
case
'vie_joueur': return $infos_joueur['vie']; break;
case
'forme_joueur': return $infos_joueur['forme']; break;
}
}

// Une fonction qui fait l'inverse. Pour modifier les valeurs de cette ensemble de donner en modifiant les tableaux.
function upval($val,$var)
{
global
$infos_joueur;
switch(
$val)
{
case
'vie_joueur': $infos_joueur['vie']+=$var; break;
case
'forme_joueur': $infos_joueur['forme']+=$var; break;
}
}

---

Un Controleur
Code PHP :
<?php 
include('./modeles/test.php');

$condition = '';
if(
val('vie_joueur')<=50) $condition .= 'Vous devez avoir + de 50 PDV';
if(
val('region')!='ville') $condition .= 'Vous devez etre en ville';

if(
$condition == '')
// On appel les fonctions du modele
else
$affichage['contenu'] = $condition;
Donc pas de view car ma structure est relativement "statique" et gérée par le fichier d'affichage du début.
---

Voilà (trés) grosso modo ma structure.
Qu'en pensez vous ? Ses forces ? Faiblesses ?

Il faut que vous sachiez que je bosse dans un sens où j'aimerai rendre trés "simple" l'implémentation de nouvelles fonctionnalités afin de répondre trapidement aux demandes de mes joueurs...

Merci par avance de votre attention.

Bonne soirée.


RE: Structure de mon jeu - Allwise - 28-04-2009

Tu sépares le traitement des données de leur affichage, tu sépares également les différents traitements en contrôleurs, et tu récupères tes données avec des modèles. Et t'as un "bootstrap", c'est du MVC quoi, à la couche "vues" près.

Je pense que t'auras pas de problème pour maintenir et mettre à jour ton application, tant que tu continues à cloisonner les traitements dans différentes fonctions / fichiers. C'est les plats de spaghettis, où y a des includes d'includes d'includes et où toutes les fonctions s'entre-appellent qui sont infâmes à maintenir Smile


RE: Structure de mon jeu - comg - 28-04-2009

C'est surtout pour le fait de sortir les infos de la BDD, de les stocker dans des arrays puis de les réenregistrer en fin de traitement que j'aimerai votre avis.

Mais merci Allwise Wink
C'est trés encourageant ! (Surtout que je début en MVC ^^)