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. #41
    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
    En fait je suis le seul qui doit utiliser Symfony.
    Les projets sont tous différents, celui là c'était est celui qui me plaisait le plus.
    Ya eu plusieurs site web (2 sans outils et un avec Joomla).

    Si j'ai mis une association entre personnage et carte, c'est pour dire que le personne se trouve dans une carte, comme ça il a X, Y et l'id de la carte, comme ça je peux dessiner où il se trouve.

    Mon modèle est partiel.
    Mais je pense que pour la soutenance de projet je mettrais quelque chose pour sfDoctrineGuardPlugin et sfForkedDoctrineApplyPlugin, je respecterais myUser.

    En fait au lieu de traiter l'intégralité en une fois, je travail par morceaux.
    C'est pas la bonne solution, mais ce n'est pas gênant.
    Par exemple si j'avais fais Cellule pas en même temps que Carte ça aurait été plus gênant, que si maintenant je veux rajouter un marchand.
    Parce qu'un marchand c'est qu'une classe qui à plusieurs item.

    Comment je vais faire pour créer les tables dont tu me parles avec Symfony ?
    Ça ce fait dans le schema.yml ?
    Je pense que ça ce fait en mettant plusieurs relations dans une même classe.

    C'est chouette, j'ai trouvé les liaisons en doctrine :
    http://www.doctrine-project.org/proj...chema-files/en
    Keith Flint 1969 - 2019

  2. #42
    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
    En fait, mai question sur la cellule était plus pour comprendre comment tu comptait repérer les personnages ou objets à proximité de celui du joueur.

    Savoir où il est sur une carte n'est pas savoir ce qu'il y a à cet endroit comme perso, objets, effets de terrain...

    C'est bien de respcter myUser faut toujours respecter les anciens
    Plus sérieux, vu la simplicité d'utilisation de sfGuard et sfFDA, tu as presque intérêt à les inclure dans le projet. Cela va en jeter niveau interface et fonctionnalité, tout en demandant un minimum niveau développement.

    Pour pouvoir travailler un projet par morceau, il faut déjà avoir une très bonne idée d'où les morceaux commencent et terminent, donc une très bonne annalyse du projet, de la base, des fonctionnalités,... avant de faire la découpe. Là, j'ai plutôt l'impression que tu découpes avant de savoir où tu vas. C'est plutôt travailler par rustines Ne jamais oublier que le garant d'un bon projet est l'analyse de celui-ce. Je suis même surpris que cela ne fasse pas partie de ton dossier de stage.

    Pour créer des tables, il faut commencer par en faire un schéma et si possible qu'il réponde aux 5 formes normales, ou alors que tu saches bien pourquoi tu ne les respectes pas. Mais je pense qu'avant de faire le schéma de ta base, il serait important que tu écrive les règles du jeu, que le schéma y colle. Ensuite du schéma, tu vas écrire le shema.yml qui va lui générer les tables. Et ensuite, il sera temps d'écrire l'application.

    Si tu veux en jeter, envisage aussi de faire ton application en multilingue. Peu d'effort de développement dans symfony, surtout que là, tu ne vas pas avoir une base de données énormes, et un effet bœuf en présentation du projet. Et tu n'es pas obligé d'écrire des traductions pour tous le projet, tu peux n'en présenter que pour un où deux écrans.
    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 !

  3. #43
    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
    L'analyse est importante j'avais commencé le projet par ça en parallèle de Symfony.
    Mais bon Symfony à tellement posé de problème que je me suis concentré uniquement sur lui.

    Ouais j'essaie de travailler par rustine.
    J'ai envie de bricoler, même si c'est mauvais pour le projet.
    Parce que pour moi ce serait important que j'ai une interface où je peux m'inscrire, me connecter, créer un personnage, voir la carte et me déplacer.
    Psychologiquement il FAUT que je vois ça.
    Je suis pas sûre mais est-ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:build-all
    Est souple ?

    Ce que j'entends par là, c'est est-ce qu'il est possible de créer une classe, puis de se dire qu'on a oublié quelque chose dans le modèle, de modifier le schema.yml et que ça se mette à jour ?

    Une fois après une mauvaise manipulation, j'avais supprimer ma base.
    Et Symfony me l'avais recréé grâce à lib\model\doctrine.
    Donc si je réécris des classes dans schema.yml, que je vire les classes en question de lib/model/doctrine ça devrait pouvoir se régénérer non ?

    Le truc que c'est j'ai peu de temps, j'ai déjà pris énormément de retard et pour l'instant j'ai l'impression de n'avoir strictement rien fais.
    J'ai envie d'aller voir mon chef de projet et de lui dire que j'ai fais quelque chose.

    J'ai envie d'avoir un design, de comprendre comment insérer des modules.
    Comment fait-on pour afficher quelque chose quand l'utilisateur n'est pas connecté et l'enlever quand il l'est.
    Voilà c'est des choses basique sur Symfony, que j'ai envie de maitriser.
    Après ça peut sembler futile comparé à l'analyse.

    Mais bon rien qu'avec carte et cellule, j'ai envie de créer une carte et de l'afficher.
    Pour sentir quelque chose de plus palpable qu'un diagramme de classe.

    Parce que bon, j'ai pas envie d'arriver le jour de la soutenance et te dire "voila l'analyse de mon projet, par contre je suis pas allé plus loin".
    Bon en même temps arriver et dire "j'ai bricolé comme un sac et ça marche un peu près, parce que j'ai rafistolé avec du Duct Tape" c'est pas tellement mieux.

    Vos conseilles m'aident beaucoup.
    Ça fait super plaisir de proposer quelque chose et d'avoir rapidement des critiques.
    Pour savoir quoi modifier pour faire ça proprement.
    C'est super agréable d'avoir l'opinion de gens qui s'y connaissent.
    Donc une fois de plus je vous remerci.

    Là je vais essayer de faire une bonne analyse pour la partie personnage/item/etc...
    Le passer en schema.yml et ensuite j'aimerais avancé très superficiellement la partie vue.

    ==============================================
    Edit :
    Ça y est je viens de comprendre un de tes anciens post !
    Au lieu de mettre X, Y, et l'id d'une carte dans la classe personnage.
    Je fais une table avec l'id d'un personnage et l'id d'une case.
    Mais c'est beaucoup plus logique que ce que je voulais faire !

    Je crois qu'on peut représenter ça comme ça :

    Je me suis planté sur la multiplicité entre sfGuardUser et Personnage.

    En fait il ne doit pas y avoir d'association entre Item et Classe, ce serait plutôt entre Classe et Type.

    J'ai toujours pas compris ça, par contre :
    Citation Envoyé par Michel Rotta Voir le message
    Si tu veux correctement gérer les classe et les items il faut rajouter deux tables. Une qui décrit la classe et une qui permet de lier les classes du perso aux classes (s'il peut avoir plusieurs classes). Idem pour les item.

    Et il faut peut-être une liaison entre les item et les classes pour savoir quels item il est possible d'utiliser par quel classe. Probablement une liaison n-n donc une table intermédiaire...
    J'ai essayé de passer mon diagramme de classe en doctrine/YAML ça donnerait quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Situation:
       columns:
       relations:
          Cellule:
             foreignAlias: Situations
          Personnage:
             foreignAlias: Situations
     
    Personnage:
       columns:
          PointAction: integer
          Niveau: integer
          HP: integer
          MP: integer
       relations:
          Classe:
             foreignAlias: one
          Item:
             foreignAlias: Personnages
          sfGuardUser:
             foreignAlias: one
          Cellule:
             foreignAlias:Personnages
             class:Cellule
             refClass:Situation
     
    Classe:
       columns:
          Nom: string(255)
          ImageGrande: string(255)
          ImagePetite: string(255)
       relations:
          Type:
             foreignAlias: one
    Item:
       columns:
          Nom: string(255)
       relations:
          Type:
              foreignAlias: one
     
    Type:
       columns:
          Nom: string(255)
    Mais je dois avoir faux entre personnage/cellule/situation...
    Keith Flint 1969 - 2019

  4. #44
    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 suis pas sûre mais est-ce que :
    Code : symfony doctrine:build-all
    Est souple ?
    Oui et non. Tu peux modifier, il va régénérer la base. Ce qui implique qu'il efface tout.

    Maintenant, si tu as des fixatures correctement construit. Je pense que cela le fait. Moi je travail ainsi. La bonne commande est alors :
    symfony doctrine:buid --all --and-load --no-confirmation
    le --and-load pour charger les fixatures
    et le --no-confirmation pour qu'il ne demande pas de confirmer l'effacement de la base.


    Parce que pour moi ce serait important que j'ai une interface où je peux m'inscrire, me connecter, créer un personnage, voir la carte et me déplacer.
    Je comprends l'envie de voir quelque chose, mais je reste avec mes plus de 30 années de programmations derrière moi qui me font dire qu'un projet trop vite mené envoie dans le fossé.

    Ton système de carte avec un positionnement me fait un peu peur. Soit tu as une idée très précise de comment le gérer cette carte et les déplacement, soit tu vas dans le mur. Jette un œil à un jeu style ogame, travian ou imperion, il y en a d'autre surement mais que je ne connais pas. C'est des jeu en interface web, un peu dans le style que tu dois rendre et ils pourraient servir de très lointaines idées.


    Comment fait-on pour afficher quelque chose quand l'utilisateur n'est pas connecté et l'enlever quand il l'est.
    C'est ce qui me fait peur dans ton projet... cf les deux exemples données ci-dessus. Il faut le savoir avant de commencer le développement.


    Pour sentir quelque chose de plus palpable qu'un diagramme de classe.
    Réaction d'utilisateur encore 30 ans et le diagramme de classes sera plus parlant, il sera alors temps d'envisager la retraite


    Le diagram
    Attention, le myUser n'est pas un objet du modèle, même lié à sfGuard. Il n'a donc pas a figurer ici. Éventuellement parles là de la table des utilisateurs générée par sfGuart : sf_guard_user.
    Je ne comprend pas le sens de la table situation
    Oui pour le lien entre classe et item qui doit être changé.
    Ca avance !
    Ma remarque sur les liaisons entre classe et item, c'est moitié ta remarque sur la liaison entre item et classe qui devrait l'être sur type. Et moi qui ai compris (a tord) qu'un personnage pouvait avoir plusieurs classes et évoluer indépendamment dans ces classes. Donc la modif que tu proposes me semble suffisante.


    On parle du shema après.
    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 !

  5. #45
    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 pour ces réponses.

    La table situation c'est une table de liaison entre personnage et case.
    Je l'ai peut être mal représenté.
    Mais c'est une table avec un id de personnage et un id de case.
    Quand le personnage se déplace l'id de la case change.
    Keith Flint 1969 - 2019

  6. #46
    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
    Le personnage ne peut avoir plusieurs places simultanément dans une cellule d'une carte, il est dans une cellule donnée. Rajouter une table intermédiaire rajoute un niveau de complexité inutile.

    En fonction de ton schéma et de ce que nous avons discuté j'ai monté un shema.yml qui pourrait s'approcher de tes besoins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    personnage:
      actAs:
        Sluggable:
          fields: [ nom ]
      columns:
        user_id: integer
        # nom: nom du perso, pas du joueur
        nom:
          type: string(30)
          unique: true
        cellule_id: integer
        # carte_id: hors FN pour accélérer les recherches
        # pas de relation
        carte_id: integer
        classe_id: integer
        sante: integer
        force: integer
        magie: integer
        # nombre de piece d'or du personnage
        or: integer
        mode_vendeur: boolean
      relations:
        user:
          class: sfGuardUser
          local: user_id
          foreingAlias: personnages
        cellule:
          foreignAlias: personnages
        classe:
          foreignAlias: personnages
     
    cellule:
      actAs:
        I18n:
          fields: [ description ]
      columns:
        positionX: integer
        positionY: integer
        # img: nom de l'image de fond de la cellule
        img: string(40)
        # ouvert: si vrai, un joueur où un monstre peut s'y trouver
        ouvert: boolean
        # monstre: si vrai, un monstre peut y prendre place
        monstre: boolean
        # item: si non null, un objet s'y trouve
        item_id: integer
        # description: description de la cellule pour les mal voyant
        description: string(50)
        carte_id: integer
        # change: si non null, la cellule (d'une autre carte ou de la
        # même carte) où arrive le joueur s'il ce positionne
        # sur cette cellule. Une cellule avec change non nul doit avoir
        # monstre a false
        change_id: integer
      indexes:
        position:
          fileds: 
            carte_id:
              sorting: ASC
            positionX:
              sorting: ASC
            positionY:
              sorting: ASC
          type: unique
      relations:
        item:
          foreignAlias: cellules
        carte:
          foreignAlias: cellules
     
    carte:
      actAs:
        I18n:
          fields: [ nom, description ]
          actAs: 
            Sluggable:
              fields: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(200)
        img: string(40)
     
    itemPersonnage:
      columns:
        personnage_id: 
          type: integer
          primary: true
        item_id:
          type: integer
          primary: true
        nombre: integer
        # prix: si non null, le prix de vente de l'objet pour le mode vendeur
        prix: integer
      relations:
        personnage:
          foreignAlias: itemPersonnages
        item:
          foreignAlias: itemPersonnages
     
    item:
      actAs:
        I18n:
          field: [ nom, description ]
          actAs:
            Sluggable:
              field: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(200)
        img: string(40)
        type: 
          type: enum
          values: [ arme, soin, force ]
        # proba: probablité de voir cet item arriver sur une cellule
        proba: integer
        # classe: si non nul, la classe qui peut utiliser cet objet
        classe_id: integer
      relations:
        classe:
          foreignAlias: items
        personnages:
          class: personnage
          refClass: itemPersonnage
          foreignAlias: items
     
    classe:
      actAs:
        I18n:
          fields: [ nom, description ]
          actAs:
            Sluggable:
              fileds: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(50)
        img: string(40)
        force_max: integer
        magie_max: integer
    Il n'est pas testé.
    Il inclus des slug pour avoir des url "smart" et "sexy" (pas de numéros)
    Il inclus le i18n pour avoir l'application en multilangue, a voir si tu as le temps de gérer. Symfony fait un grosse part du travail une fois compris le système de requête et de template.

    Si tu as des problèmes avec ou des questions n'hésite pas. Il faut bien comprendre le système de jeu sous-jacent et les subtilités (et la force) de doctrine.

    Il y a une liaison n-n entre item et personnage avec des arguments sur la liaison (itemPersonnage) qui est intéressant à commenter. Je te laisse faire le schéma graphique qui va avec. Ton copain à plein d'image à récolter !
    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 !

  7. #47
    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
    Génial ! Merci beaucoup

    Bon ben maintenant faut que je comprenne.
    Avec les commentaires ça devrait aller encore plus vite !
    Keith Flint 1969 - 2019

  8. #48
    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
    Pose des questions si besoin.
    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. #49
    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 une question de gros débutant de Symfony !
    Comment récupérer un "objet" depuis le base de donné ?
    En donnant une id, moi j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    	$q = Doctrine_Core::getTable('carte')
    	  ->createQuery('c')
    	  ->where('c.id = ?', '1');
    	$carte = $q->execute();
     
    	$i=0;
    	$nom = $carte->getFirst()->getNom();
    	$largeur = $carte->getFirst()->getLargeur();
    	$hauteur = $carte->getFirst()->getHauteur();
    	$collectionCellule = $carte->getFirst()->getCellules();
     
    	foreach($collectionCellule as $cellule)
    	{
    		if($i<$largeur-1)
    		{
    			echo "<img src=".$cellule->getImage().">";
    			$i++;
    		}
    		else
    		{
    			echo "<img src=".$cellule->getImage()."><br>";
    			$i=0;
    		}
    	}
    ?>
    getTable() me renvoi une collection, mais comme l'id est unique il doit bien exister une meilleure solution ?
    Remarque là il y a que l'objet 0 dans la collection, donc j'ai fais getFirst(), c'est pas très gênant.

    Au fait là c'est juste un test pourrie, je vais le faire en classe.
    Mon indexSucces.php sera mieux quand même.
    Keith Flint 1969 - 2019

  10. #50
    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
    execute retourne toujours une collection

    fechtOne retourne le premier de la collection en tant que record. S'il n'y en a qu'un, c'est celui là
    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. #51
    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
    Ok merci.

    J'ai voulu essayer ton schemal.sql.
    J'ai enlevé tout les fichiers de lib/model/doctrine, j'ai exécuté symfony cc, j'ai vidé ma base de donnée. (je sais j'avais pas besoin de faire ça, mais je pensais avoir plus de chance de réussite comme ça)
    J'ai fais :
    symfony doctrine:build --model
    et là pas de problème.
    symfony doctrine:build --sql

    et là j'ai eu ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> doctrine  generating sql for models
     
     
      Fields not set.
     
     
    PHP Fatal error:  Call to a member function evictAll() on a non-object in C:\sym
    fony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connection.php on
     line 1239
    Je suis en train de rechercher l'origine du problème.
    Keith Flint 1969 - 2019

  12. #52
    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 n'ai pas pris (eu) le temps de le tester ce matin.

    Attention, il est conçu pour fonctionner avec une application qui a le plugin sfDoctrineGuardPlugin installé et configuré... sans, il ne peut fonctionner.

    Pour construire tu as intérêt à utiliser la commande
    symfony doctrine:build --all --and-load --no-confirmation
    qui régénère la totalité des objets, le sql, nettoie et recrée la base et utilise les fixature pour la repeupler.

    Tu as aussi intérêt à écrire un fichier de fixature pour peupler ta base...
    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. #53
    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
    Il est vrai que sur ce PC je n'avais pas installé sfDoctrineGuardPlugin et sfForkedDoctrineApplyPlugin, mais maintenant c'est fait proprement.
    C:\symfony\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Connection.php
    Je sais même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public function clear()
        {
            foreach ($this->tables as $k => $table) {
                $table->getRepository()->evictAll();
                $table->clear();
            }
        }
    La ligne evictAll() pose problème.
    Je l'ai mis en commentaire pour tester et l'erreur n'est plus que :
    Fields not set.

    Je vais quand même vérifier que les plugins fonctionnent correctement.
    Mais quand j'ai essayé j'avais un problème avec le smtp de Free, est-ce que ça peut venir du fait que là je suis sous une IP Orange, ou est-ce que ça n'a rien a voir ?
    Keith Flint 1969 - 2019

  14. #54
    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
    Il ne t'ont jamais dit, tes parents, qu'il ne fallait pas écouter n'importe quel modérateur qui se prend pour un mage sur un forum d'informatique ?

    Quant tu as ce type d'erreur, il y a 99.99% de chance que cela provienne de ton modèle. Et j'avais précisé non testé.

    Dans un cas pareille il faut tester par petits bout. Et utiliser la commande "symfony doctrine:clean-model-files" pour supprimer les objets préalablement généré et qui pourraient conserver des erreur. Essayes et tu vas vite repérer qu'il y a plusieurs fautes de frappes, des inversions de caractères dans le schema. Et aussi que "force" et "or" sont deux mots réservés qui sont devenus "puissance" et "piece".

    Ceci fixé, le schéma passe sans avoir besoin de réécrire le framework

    Bon. Bon ? Je le suis, bon. Le schéma corrigé (et testé) ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    personnage:
      actAs:
        Sluggable:
          fields: [ nom ]
      columns:
        user_id: integer
        # nom: nom du perso, pas du joueur
        nom:
          type: string(30)
          unique: true
        cellule_id: integer
        # carte_id: hors FN pour accélérer les recherches
        # pas de relation
        carte_id: integer
        classe_id: integer
        sante: integer
        puissance: integer
        magie: integer
        # nombre de piece d'or du personnage
        piece: integer
        mode_vendeur: boolean
      relations:
        user:
          class: sfGuardUser
          local: user_id
          foreignAlias: personnages
        cellule:
          foreignAlias: personnages
        classe:
          foreignAlias: personnages
     
    cellule:
      actAs:
        I18n:
          fields: [ description ]
      columns:
        positionX: integer
        positionY: integer
        # img: nom de l'image de fond de la cellule
        img: string(40)
        # ouvert: si vrai, un joueur où un monstre peut s'y trouver
        ouvert: boolean
        # monstre: si vrai, un monstre peut y prendre place
        monstre: boolean
        # item: si non null, un objet s'y trouve
        item_id: integer
        # description: description de la cellule pour les mal voyant
        description: string(50)
        carte_id: integer
        # change: si non null, la cellule (d'une autre carte ou de la
        # même carte) où arrive le joueur s'il ce positionne
        # sur cette cellule. Une cellule avec change non nul doit avoir
        # monstre a false
        change_id: integer
      indexes:
        position:
          fields: [ carte_id, positionX, positionY ]
          type: unique
      relations:
        item:
          foreignAlias: cellules
        carte:
          foreignAlias: cellules
     
    carte:
      actAs:
        I18n:
          fields: [ nom, description ]
          actAs:
            Sluggable:
              fields: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(200)
        img: string(40)
     
    itemPersonnage:
      columns:
        personnage_id:
          type: integer
          primary: true
        item_id:
          type: integer
          primary: true
        nombre: integer
        # prix: si non null, le prix de vente de l'objet pour le mode vendeur
        prix: integer
      relations:
        personnage:
          foreignAlias: itemPersonnages
        item:
          foreignAlias: itemPersonnages
     
    item:
      actAs:
        I18n:
          fields: [ nom, description ]
          actAs:
            Sluggable:
              field: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(200)
        img: string(40)
        type:
          type: enum
          values: [ arme, soin, force ]
        # proba: probablité de voir cet item arriver sur une cellule
        proba: integer
        # classe: si non nul, la classe qui peut utiliser cet objet
        classe_id: integer
      relations:
        classe:
          foreignAlias: items
        personnages:
          class: personnage
          refClass: itemPersonnage
          foreignAlias: items
     
    classe:
      actAs:
        I18n:
          fields: [ nom, description ]
          actAs:
            Sluggable:
              fileds: [ nom ]
              uniqueBy: [ nom, lang ]
      columns:
        nom: string(50)
        description: string(50)
        img: string(40)
        puissance_max: integer
        magie_max: integer
    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. #55
    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 tout à fonctionné à la perfection
    C'est pas mal symfony doctrine:build --all --and-load --no-confirmation.

    J'arrive à passer par gmail maintenant, j'ai trouvé la configuration du factories.yml dans A Gentle Introduction To Symfony.

    Maintenant que j'ai les modèles, j'ai l'impression que mon projet à fait un bon de géant.
    Avoir toutes les classes c'est énorme.
    Je peux faire tellement de chose maintenant.
    Keith Flint 1969 - 2019

  16. #56
    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
    Réfléchis bien a ce que tu dois faire, pas ce que tu peux faire...

    Commence par créer une ou deux cartes en factories ainsi que des joueurs, classes perso, item et associations...

    En préparent le modèle j'ai envisagé 3 classes, une de guerrier tout en force, une de magicien, tout en magie et une de paladin moitié force, moitié magie. Aller au-delà va être chaud a gérer.

    Tiens nous au courant !
    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. #57
    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 comptais commencer par ça
    Keith Flint 1969 - 2019

  18. #58
    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 commencé de remplir ma base à la main.
    Donc j'ai fais des entrée dans :
    • carte
    • carte_translation
    • cellule
    • classe
    • classe_translation
    • personnage


    J'ai quelques questions :
    Que signifie actAs: Sluggable:, que dois-je mettre dans les champs slug ? (bon je pense trouver une réponse assez rapidement en recherchant sur internet).

    A côté du champ slug j'ai un champ lang de 2 caractères dans les tables translation, comme dans c'est dans actAs: I18n ça doit être pour la langue, ça veut dire que je dois créer autant d'entrée qu'il y a de langue (en+fr par exemple) pour chaque classe de personnage si j'ai bien compris.

    En parlant de I18n, dans des fichiers XML j'ai bien la version française de plusieurs éléments, cela dit ils ne sont pas pris en compte, je ne sais pas où dire que je suis en fr.
    Il y a bien un language: fr dans view.yml mais c'est juste un méta...

    Sinon là je récupère des images, je fais le layout.php, le main.css.
    Je ne peux pas compter sur mon collègue...

    Pis là il me manque tellement de fondamentaux de Symfony.
    C'est vraiment la base même de l'utilisation de Symfony qui me fait défaut.
    Pourtant j'ai bien suivi A Gentle Introduction To Symfony et Practical Symfony.

    Une question très basique :
    Dans <?php echo $sf_content ?> on affiche un module.
    Si je veux qu'un utilisateur puisse créer un personnage, je dois créer un module, faire les routes dans routing.yml, créer un formulaire dans le module ?
    Est-ce que c'est comme ça qu'on est sensé procédé ?

    Edit :
    Effectivement ça a été rapide de trouver des infos sur sluggable :
    http://www.doctrine-project.org/docu...iors:sluggable
    Keith Flint 1969 - 2019

  19. #59
    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
    Citation Envoyé par thierrybenji Voir le message
    J'ai commencé de remplir ma base à la main.
    Donc j'ai fais des entrée dans :
    • carte
    • carte_translation
    • cellule
    • classe
    • classe_translation
    • personnage
    Mauvaise idée... crée un fichier fixature avec ces informations. Si jamais tu es obligés de modifier ton modèle (et le risque que cela arrive est très important) tu vas perdre toutes les données entrée directement, alors que si tu les génères depuis un fixature, tu peux les recharger à l'infini.

    Citation Envoyé par thierrybenji Voir le message
    Que signifie actAs: Sluggable:, que dois-je mettre dans les champs slug ? (bon je pense trouver une réponse assez rapidement en recherchant sur internet).
    Le slug permet de générer un champ texte qui va être inclu dans l'url à la place de l'id. Ici il est traduit, mais, à la réflexion, je pense que je n'aurais pas du mettre un slug unique par langue, ce qui induit de mettre la langue dans l'url, mais un slug unique toutes langues confondues. Reste que pour répondre à ta question, il est rempli seul et automatiquement par doctrine.

    Citation Envoyé par thierrybenji Voir le message
    A côté du champ slug j'ai un champ lang de 2 caractères dans les tables translation, comme dans c'est dans actAs: I18n ça doit être pour la langue, ça veut dire que je dois créer autant d'entrée qu'il y a de langue (en+fr par exemple) pour chaque classe de personnage si j'ai bien compris.
    L'idée est de faire le jeu en 2 langue, c'est toujours assez impressionnant... Tu changes la langue de l'utilisateur et toutes l'interface est traduite. Et ceci ne demande pas un travail énorme avec symfony, sauf à traduire l'application....

    Effectivement, il faut un enregistrement par langue.

    A faire dans les fixatures. Regarde dans jobeet partie i18n pour avoir un exemple de fixature avec traduction.

    Citation Envoyé par thierrybenji Voir le message
    En parlant de I18n, dans des fichiers XML j'ai bien la version française de plusieurs éléments, cela dit ils ne sont pas pris en compte, je ne sais pas où dire que je suis en fr.
    Il y a bien un language: fr dans view.yml mais c'est juste un méta...
    La langue de l'utilisateur est gérée dans l'objet MyUser. Il faut donc le modifié pour qu'après l'autentification tu récupères la langue de l'utilisateur et la mette dans setCulture(). Oui, je sais, langue devient culture.

    Attention, c'est une partie un peu instable du framework. Si tu n'utiliser que la langue et pas la culture, ceci ne devrait pas poser de problèmes pour ton projet de test. Par contre, pour un projet de prod, la gestion est un peu plus lourde.

    Citation Envoyé par thierrybenji Voir le message
    Sinon là je récupère des images, je fais le layout.php, le main.css.
    Je ne peux pas compter sur mon collègue...
    Ca c'est un pot... ne le laisse pas se faire mousser lors de la présentation...

    Citation Envoyé par thierrybenji Voir le message
    Pis là il me manque tellement de fondamentaux de Symfony.
    C'est vraiment la base même de l'utilisation de Symfony qui me fait défaut.
    Pourtant j'ai bien suivi A Gentle Introduction To Symfony et Practical Symfony.
    Le mieux reste jobeet. Consacres quelques heures (24 pour tous faire) (mais tu as déjà des bases qui devraient te permettre de survoler les premiers tutos)(et tu devrais pouvoir arrêter au J20) soit dans les deux jours d'apprentissages qui devraient être gagné en limitant les égarements ultérieurs.

    Citation Envoyé par thierrybenji Voir le message
    Une question très basique :
    Dans <?php echo $sf_content ?> on affiche un module.
    Si je veux qu'un utilisateur puisse créer un personnage, je dois créer un module, faire les routes dans routing.yml, créer un formulaire dans le module ?
    Est-ce que c'est comme ça qu'on est sensé procédé ?
    Le plus simple serait de créer un module dédié à la gestion des personnages d'un utilisateur. Base toi sur un module auto généré par symfony (n'utilises pas l'option --non-verbose-template qui ne génère pas les requêtes). Il faudra modifier les requêtes pour les limiter à l'utilisateur courant. Et vérifier que le perso demandé en modification soit bien celui de l'utilisateur. Mais tu devrais avoir un bon départ pour ton travail. Après, l'idéal est de créer des entrées dans le routing.

    En fait, l'idéal serait d'utiliser la fameuse option sus nommée et de créer dans tes objets du modèle des méthodes qui ne retournent que les objets de l'utilisateur courant. Ce serait le plus simple à long terme, mais le plus lourd à court terme.

    En y réfléchissant bien, il faut que tu modifies l'objet MyUser pour qu'il soit capable de récupérer l'id du user en cour et stocker celle du perso en cours (une fois icelui choisi).

    Pour le user, il faut créer une méthode getUserId() qui va retourner le paramètre "user_id" stocké par sfGuard.

    Pour le perso, je créerais deux méthodes setPersoId() et getPersoId() qui stockerait dans le paramètre holder l'id du perso et l'autre le récupère. Et peut-être aussi stocker le nom du perso pour ne pas avoir à le récupérer a chaque fois sur la base, bien que là, je ne sois pas sur de l'utilité. A voir.

    Ensuite sur les tables qui prennent en compte l'utilisateur (personnage) et celles qui prennent en compte le perso (item, carte,...) créer des méthodes pour récupérer la liste et l'enregistrement en vérifiant qu'il appartient bien au user et au perso le cas échéant et retournant l'objet. Et utiliser des sfDoctrineRouteCollection pour récupérer les données en les paramètrants avec les méthodes limitées.

    Je sais, cela va paraître obscure et terrifiant ( ) vu ainsi, mais avec quelques recherches et un peu de lecture dans jobeet, cela devrait guider la lecture et aiguiser la connaissance.
    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 !

  20. #60
    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
    Une fois de plus merci pour toutes ces réponses qui m'éclaircissent beaucoup.

    Mon collègue à été absent pendant un assez long moment à cause d'une perte de motivation, il est revenu puis il est repartit pour cause de maladie, là il semblerait qu'il tend à vouloir travailler sur le projet.

    J'ai pas mal de chose à retourner voir sur Jobeet, aujourd'hui ça me semblera beaucoup moins flou.

    J'ai beaucoup de mal à comprendre la fin du précèdent post.
    Au début je pensais qu'il s'agissait "simplement" de modifier myUser pour qu'il contienne l'id du personnage avec lequel il est en train de jouer.
    Mais apparemment ce n'est pas ça.
    Puisque sfGuardUser et myUser sont 2 classes différentes.

    La suite je la comprend comme ça :
    Récupérer la liste et l'enregistrement pour vérifier que les items appartiennent bien au personnage de l'user ?

    ====================
    Je commence l'i118n.
    Pour le moment j'ai un menu déroulant avec français et english et ça modifie bien la culture de l'user.
    Keith Flint 1969 - 2019

+ 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