IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

Créer un jeu avec Symfony [1.x]


Sujet :

PHP

  1. #61
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Pour l'objet MyUser

    Il est l'enfant de sfGuardSecurityUser qui est, de loin, l'enfant de sfUser...
    Si tu veux travailler aves symfony, il est indispensable de bien comprendre les implications de la POO. Et donc tous ce qui est objets, propriétés, méthodes et héritage de classes. Comprendre cela, c'est comprendre l'architecture du framework, ou du moins comment en lire la carte, ce qui n'est déjà pas mal.

    L'objet user (myUser, le dernier maillon des héritages) a une particularité, une partie de ces données sont sauvegardées entre deux exécutions de ton applications dans une zone qu'on va appelée la session utilisateur. Dans l'objet user de base est définit un sfParameterHolder qui est une sorte de container qui permet de stocker des données sous forme de "nom" associé à une "valeur". Toutes les données contenues dans le sfParameterHolder sont préservées entre deux exécutions dans la session.

    Lors de l’authentification d'un user, l'objet sfGuardSecurityUser (qui hérite du sfUser) y stocke l'id de l'utilisateur courant. Il peut être facilement récupéré par la méthode suivante, rajoutée à l'objet myUser, lui même enfant de sfGuardSecurityUser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function getUserId()
    {
      return $this->getParameter('user_id');
    }
    La méthode getParameter() permet ici de récupérer un paramètre nommé du sfParameterHolder.

    De la même manière et avec la méthode setParameter(), il est possible d'y stockée une information (l'Id du personnage), de la préserver entre deux exécution dans la session et de la récupérer aussi souvent que nécessaire.


    Pour ce qui est des méthodes liste et data.
    Désolé, il semblerait qu'un message ai disparu de la base, ce qui peur rendre ce qui suit un peu incompréhensible.

    Tu peux accéder aux contrôleurs par des routes. Un des systèmes de route est le DoctrineRoute. L'avantage est qu'en plus de simplement router vers le contrôleur idoine (executeQuelqueChose) il va vérifier qu'il y a des données a affichée et le retourner au contrôleur... Et, si pour un enregistrement seul, il n'y a rien à afficher, il va renvoyer une erreur 404 sans avoir besoins d'écrire la moindre requête et test dans le contrôleur.

    On peut regrouper tous les sfDoctrineRoute nécessaire à un CRUD dans une seule collection de routes basée sur un sfDoctrineRouteCollection. Simple et élégant. Par contre, il arrive que, pour une liste, il ne s'agisse pas simplement d'afficher une liste de tous les enregistrements, mais une liste partiel. Par exemple dans ton application, si on veut afficher la liste des personnages, il ne faut afficher que la liste des personnages du joueur actif. Il est donc possible, dans les paramètres de l'objet sfDoctrineRouteCollection de lui préciser la méthode a utiliser sur le modèle pour récupérer la liste, cette méthode retournera donc uniquement les personnage de l'utilisateur courant. De la même manière, si on utilise, pour le personnage, l'id du personnage d'un autre joueur en modifiant l'url il ne doit pas être possible de le modifier, voir même de l'afficher. Donc on va préciser à notre sfDoctrineRouteCollection une méthode pour les données unitaires (un enregistrement) qui ne retourne un sfDoctrineRecord que si l'Id du personnage envoyé correspond à un des personnages de notre utilisateur, null si non, ce qui va généré une erreur 404 si un quidam tente de modifier un perso qui ne lui appartient pas.

    Suis-je plus clair ? As-tu eu le message qui me semble manquer ou ne l'ais-je pas validé ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  2. #62
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Oui c'est beaucoup plus clair maintenant, merci

    Quand au message manquant, si tu parles d'un message privé, je n'en ai pas reçu.
    Keith Flint 1969 - 2019

  3. #63
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Non, entre le long message où je te site à plusieurs reprises et ta réponse, il devrait y avoir un autre message.

    Bravo pour ton menu en français et anglais. Les bases ce mettent en place
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  4. #64
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Ouais ben disons qu'en fait, j'ai suivis la partie internationalisation de Jobeet, qui est même disponible en français.
    Purée internationalisation ils ont eu raison de virer 18 lettres !

    C'est vraiment sympa I18n !
    Maintenant je connais bien toutes l'arborescence de mon projet Symfony.
    J'avais bricolé des fichiers pour changer le texte en français, je ne sais pas comment j'avais fais pour tomber dessus.
    Maintenant j'ai du corriger mes erreurs pour que les sources des trans-unit correspondent bien, et j'ai eu beaucoup de mal à trouver où était le fichier d'origine de l'erreur que j'avais faite, en même temps qu'elle mauvaise idée j'avais eu...
    Keith Flint 1969 - 2019

  5. #65
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    C'est de ces erreurs que l'on apprend le plus.

    Pour les applications en i18n, j'utilise dans les écrans de pseudo anglais. Et je fais systématiquement des fichiers de traductions pour toutes les langues.

    Par exemple pour le nom du perso, je vais mettre dans la fonction __() un texte du style X_name_caracter_X qui donnera "nom" en français et "name" en anglais. Mais si d'envie je veux traduire en anglais par "The caracter's name", je n'ai que le fichier de traduction a modifier, le template, lui, ne vas pas être impacté par la modification du libellé. Et les autres fichiers de traduction non plus.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  6. #66
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Faut que je fasse mes entrées dans fixtures.yml pour pouvoir les garder plus facilement, j'avais oublié de faire ça...

    J'ai essayé de rajouter la méthode getUserId à myUser.
    J'ai du mal m'y prendre, car j'obtiens l'exception suivante :
    Call to undefined method myUser::getParameter.

    sfGuardSecurityUser est le classe mère de myUser.
    Je suis aller voir dans plugins\sfDoctrineGuardPlugin\lib\user\sfGuardSecurityUser.class.php

    Et je n'ai pas trouvé de méthode getParameter.
    En recherchant sur internet j'ai vu qu'il existait une méthode getParameter dans sfUser.class.php mais moi je n'en ais pas non plus.

    C'est à moi d'écrire getParameter ?

    Bon je vais faire un peu de fixtures.yml et continuer d'essayer de faire un formulaire pour la création d'un personnage.
    La seule chose un peu difficile devrait être de récupérer la liste des classes de personnage.
    Mais dans Jobeet il le font avec le type de job, donc je devrais avoir un exemple assez similaire je crois.

    Avec un symfony doctrine:data-dump, j'ai récupéré un data.yml ça devrait presque faire l'affaire.
    Keith Flint 1969 - 2019

  7. #67
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 605
    Points
    188 605
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    C'est à moi d'écrire getParameter ?
    Tout dépend : que veux-tu faire de getParameter() ? Je l'associe directement plus à un objet de requête (donc dans une action) qu'à un utilisateur . Je verrais plus la méthode des attributs ou des flashes : http://www.symfony-project.org/jobee...Doctrine/en/13.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #68
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je t'ai enduit d'erreur

    Ce n'est pas getParameter mais getAttribute ...

    Et elle doit être définie dans sfUser, un lointain parent.


    Pour la liste des classes, tu as un widget et le validator qui va avec qui le fait très bien.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  9. #69
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Merci, ça marche comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getAttribute('user_id', null, 'sfGuardSecurityUser');
    Je vais retourner à mon formulaire.
    Je dois juste demander un nom et une classe et j'y arrive même pas
    Keith Flint 1969 - 2019

  10. #70
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Génère un CRUD d'abord. N'oublie pas qu'il va aussi falloir que le joueur puisse modifier des infos de son personnage et le sélectionner. Un module devrait suffire. Un CRUD de base devrait être un bon début. Un peu modifier le code de la création pour qu'il inclue l'id du joueur dans la table. Et un peu modifier la route (sfDoctrineRouteCollection) pour qu'elles ne retourne que les objets du user.

    Une promenade de santé, dans quelques mois
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  11. #71
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    D'accord je vais chercher qu'est-ce qu'un crud et comment le générer.
    http://www.symfony-project.org/forms...ne-Integration
    Keith Flint 1969 - 2019

  12. #72
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Désolé, pour moi il était évident qu'on vous avait expliqué la notion de CRUD à l'école, c'est la base en application de gestion de données.

    Et pour en générer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:generate-module --non-verbose-template --with-show --with-doctrine-route <application> <nomDuModuleCree> <nomDeLaClasseDeBase>
    --non-verbose-template fait au plus simple dans le template, affichage du form. Si non indiqué, il va créer un tableau avec des lignes pour chaque champs dans la liste surtout.
    --with-show. Si indiqué, il passe de la liste à un show et du show à édite. Si non, il passe directement de la liste a édite
    --with-doctrine-route. Base le CRUD sur une sfDoctrineRouteCollection qu'il te faudra définir dans le route.yml. Il y a un bon exemple dans jobeet.

    Après, il est toujours possible, dans un deuxième temps, de paramètrer la route pour qu'elle limite l'affichage. Sans avoir à toucher au code du contrôleur. Magique.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  13. #73
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Dans la licence que je suis en train de faire on a finalement fait peu de développement web.
    On a juste vu javascript et php, on a effleuré ajax.
    Mais on a parlé d'aucun framework, on à même pas fais réellement d'objet en PHP.
    Par contre on en a fait en Java et en C#.

    Et avant cette licence, j'étais dans un BTS où on a fait du PHP mais pas super pointu, on faisait surtout du C++.

    CRUD ça à l'air impressionnant, on peut créer et modifier des objets facilement apparemment.

    C'est --non-verbose-templates

    J'arrive pas à réparer l'erreur :
    Fatal error: Call to undefined method sfRoute::getObject()
    C'est peut être du au fait que je n'ai pas créé de route pour atteindre le module.

    Avec ça ça marche un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    perso:
       url: /:sf_culture/perso
       class:   sfDoctrineRoute
       options: { model: Personnage, type: object }
       param: { module: perso, action: show }
       requirements:
          id: \d+
          sf_method: [get]
    Keith Flint 1969 - 2019

  14. #74
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Si tu as généré le modèle tel que je le pense, il te faut une sfDoctrineRouteCollection, qui va prendre en charge les différents appels pour un CRUD.

    Je ne mettrais pas la culture dans la route, ceci n'a d'intérêt que pour des pages publique. Pour tes pages privé, ton objet myUser gère la culture, tu n'as donc pas à la passer par la route, un souci de moins.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  15. #75
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    J'ai modifié la classe en sfDoctrineRouteCollection et j'ai enlevé la culture dans l'adresse et j'ai à nouveau l'erreur Call to undefined method sfRoute::getObjects().

    J'ai vu des routes avec sfDoctrineRouteCollection comme class et ça ressemblait à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    perso:
       class:   sfDoctrineRouteCollection
       options:
          model:               Personnage
          module:              perso
          prefix_path:         /perso
          column:              id
          with_wildcard_routes: true
    Mais j'ai fais des dizaines d'essai, en changeant la colum et en ajoutant des requirements, mais pour l'instant je n'ai encore rien trouvé.

    J'ai un truc pas mal là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    perso_test:
       class:   sfDoctrineRouteCollection
       options:
          model:               personnage
          module:              perso
          prefix_path:         perso_test
          column:              idpersonnage
          with_wildcard_routes: true
    J'ai un problème dans mon routing.yml, selon la position de la route elle fonctionne ou pas...
    Keith Flint 1969 - 2019

  16. #76
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    La sfDoctrineRouteCollection génère une collectionde sfDoctrineRoute. Une pour chaque route type qui est nécessaire à ton application.

    Je pense que ta route n'est pas réellement prise en compte dans l'url que tu tests. Donc, l'accès au module/action ne passe pas par la sfDoctrineRoute attendue. Hors les sfDoctrineRoute ont une méthode getObjects qui permet de récupérer l'objet défini par la route. D'où l'erreur.

    Vu la route que tu indiques, l'url que tu tests devrait être
    http://www.monjeu.loc/perso
    qui doit te retourner la liste de tous les perso.

    et pas
    http://www.monjeu.loc/personnage/list
    qui va shunter le système de route.

    Pour être sur de passer par les routes que tu as définies, tu peux mettre les deux routes de bases en commentaire.

    Tu as, en CLI la possibilité d'afficher les routes et le détail d'une route en particulier. Essaye, tu devrais avoir la liste de toutes tes routes.
    (CLI = Commande Ligne Interface) me méfie maintenant
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  17. #77
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    J'ai regardé dans le schema et apparemment j'ai oublié un élément essentiel du projet.
    Il faut des points d'action, je pense ajouter un champ dans personnage.

    A la base je voulais que le personnage ait un niveau et un nombre de point d'expérience.
    Ce serait bien comme ça on gagne de l'XP, l'XP fait gagner des niveaux, en augmentant de niveau le nombre d'HP max, d'MP max et de point d'action augmentent.
    Selon les classes on n'a pas le même le même nombre d'HP et d'MP par niveau.
    Je pourrais faire simple, je dis par exemple que la classe Aventurier commence avec 250HP et 250MP.
    Tout les classes ont besoin de 100XP pour passer au niveau 2 et ont 50 points d'action.

    Pour passer au niveau 3 il faut 180% du nombre d'XP nécessaire pour atteindre le niveau 2.
    Les HP, MP, AP augmentent de 20% à chaque niveau passé.

    Je sais que je devrais bosser sur le CRUD aujourd'hui.
    Mais en allant en cours ce matin j'ai demandé un conseil à un gars de ma classe et maintenant j'affiche le personnage sur sa case.
    La carte est dans une div relative et le personnage dans une div absolute, j'utilise le CSS.
    Du coup voir le personnage sur sa cellule ça ma tout déconcentré.

    Remarque maintenant que je suis dans une spirale positive je vais peut être y arriver à la faire cette classe personnageUserForm enfant de personnageForm

    En fait elle est déjà "faite" j'y ais juste pas encore touché.
    Keith Flint 1969 - 2019

  18. #78
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    J'ai rien compris à l'attribution des points et puissance et autres.

    Perso, pour aller vite et bien, je créerais un tableau en hard avec une entrée par classe, qui pointe sur un tableau avec une entrée par niveau qui pointe sur un tableau avec une entrée par type. Pas claire ! La vengeance !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $evol = array(
              1 => array(
                        1 => array('HP' => 100, 'MP' => 80, 'AP' => 3),
                        2 => array('HP' => 110, 'MP' => 85, 'AP' => 3),
                        3 => array('HP' => 120, 'MP' => 85, 'AP' => 4),
                        .....
              ),
              2 => array(
                        1 => array('HP' => 85, 'MP' => 100, 'AP' => 3),
                        2 => array('HP' => 85, 'MP' => 110, 'AP' => 4),
                        3 => array('HP' => 92, 'MP' => 115, 'AP' => 4),
                        .....
              ));
    Où le premier chiffre est le numéro de la classe et la deuxième série le niveau.

    Simple à mettre en oeuvre, a retrouver, et ça ne va pas évoluer très souvent !
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  19. #79
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 605
    Points : 18 523
    Points
    18 523
    Par défaut
    Merci, ça va ça semble simple et rapide à implémenter.
    Ça va mettre utile pour savoir la valeur maximum que pourront avoir les points de vie, les points de magie et les points d'action de chaque personnage.

    Dans la classe action d'un module il impossible de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$q = Doctrine_Core::getTable('personnage')
    	  ->createQuery('c')
    	  ->where('c.id = ?', '1');
    	$personnage = $q->execute();
    J'ai fais un test pour voir si je pouvais faire un buton_to, qui menait à une méthode de la classe action d'un de mes modules.
    Je sais que mon bouton fonctionne, que l'action s'exécute bien, par contre il ne fait pas les opérations que je lui demande.

    J'en déduis donc, que ce n'est pas la bonne manière de faire.
    Comment faire un lien/bouton qui exécute une méthode PHP.
    J'ai honte de n'avoir par encore réussi à trouver comme faire ça avec symfony...
    Keith Flint 1969 - 2019

  20. #80
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 605
    Points
    188 605
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    J'en déduis donc, que ce n'est pas la bonne manière de faire.
    Comment faire un lien/bouton qui exécute une méthode PHP.
    J'ai honte de n'avoir par encore réussi à trouver comme faire ça avec symfony...
    Dans le module dans lequel tu veux voir l'action réalisée, tu ouvre le fichier actions.class.php. Là, tu crées une méthode executeMyAction(sfRequest $request). Tu as ta requête (POST, GET) dans $request. Tu y mets ton traitement.

    Ensuite, pour y accéder, tu définis une route qui pointe sur cette action de ce module et tu vas sur l'URL définie par la route. Là, tu peux lancer l'action définie.

    Ensuite, il suffit de faire un <?php echo link_to('my page', 'myRoute'); ?> dans un template pour afficher un lien vers cette action (si la route est nommée myRoute).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compte-rendu Android LiveCode #5 : créer un jeu en 1 h avec Project Anarchy
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 16/10/2013, 20h01
  2. Créer une table avec un jeu de données de test
    Par xarkam dans le forum SQLite
    Réponses: 2
    Dernier message: 08/08/2013, 13h39
  3. Réponses: 1
    Dernier message: 07/04/2010, 15h28
  4. Créer un jeu C avec SDL (hexagones)
    Par gaby_1 dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 21/03/2007, 16h39
  5. Créer un jeu avec plusieurs langages
    Par spidouille dans le forum Pascal
    Réponses: 6
    Dernier message: 04/10/2005, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo