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

Création de jeux vidéo Discussion :

Jeux de cartes / Sauvegarde - Rechargement de l'état


Sujet :

Création de jeux vidéo

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut Jeux de cartes / Sauvegarde - Rechargement de l'état
    Bonsoir,

    je développe actuellement un jeu de cartes en c#. Le jeux fonctionne correctement et j'essaie de mettre en place un système de sauvegarde / rechargement.

    Lorsque que l'application quitte l'application je sauvegarde en XML (sérialisation) le joueur actuelle, les cartes de chaque joueurs, les scores...)

    Mais je n'arrive pas à recharger correctement l'état du jeu, il se trouve dans une boucle while et je ne sais pas comment me repositionner correctement sur l'action a effectuer.

    Quelles sont les bonnes pratiques / Patters pour faciliter la reprise ?
    Merci d'avance.

    Cordialement,
    NeoKript

  2. #2
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Salut, déjà tu pars sur (presque) de bonne base: sauvegarder dans un fichier l'état courant du jeu.

    Communément, il est de pratique général de sauvegarder un jeu uniquement dans certaine condition (ce qu'on appelle point de sauvegarde). Ils existe plusieurs manière de faire:
    1) en mode final fantasy, on sauvegarde uniquement à des emplacements que le joueur atteint, afin de savoir exactement comment recharger le jeu
    2) en mode pokemon: on sauvegarde n'importe ou grace à une action du joueur
    3) en mode je sais pas: on sauvegarde l'état complet du jeu à la fermeture.

    La complexité de la méthode dépend de son numéro (1 est plus facile que 2 et 2 que 3).
    Concernant la sauvegarde en elle-même je te déconseille de sauvegarder en sérialisant tes objets. Il vaut mieux utilisé un protocole de sauvegarde.
    Comme tu utilise un jeu de carte, je suppose que c'est au tour par tour (même si ça ne l'est pas, ça ne change rien).
    Pour effectuer la sauvegarde, il ne faut pas réfléchir en mode "Application" (sauvegarde d'une application à un instant T et de la mémoire à un instant T), mais réfléchir en mode "processus" (à quel endroit sommes-nous dans la logique de l'application).

    Voici la démarche à suivre pour effectué une sauvegarde efficace:
    1) identifié les parties du jeu qui sont importantes (carte possédées par le joueur, carte possédées par l'adversaire, cartes dans le deck ......).
    2) dresser une liste de toutes ces parties en les regroupant dans un fichier xml
    3) identifié l'endroit logique du jeu (c'est au joueur de jouer, à l'adversaire de jouer)
    4) sauvegarder l'endroit logique du jeu dans un fichier xml

    Ensuite pour recharger la sauvegarde:
    1) récupéré les données importante du jeu (point 1 et 2)
    2) remplir les objet de donnée de ton programme avec ces données récupérées
    3) récupéré l'endroit logique du jeu (point 3 et 4)
    4) appelé la fonction qui correspond à cet endroit logique.

    Pour sauvegarder tes données, je te propose un xml du genre:

    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
    <xml>
    <partie>
    <tour>25</tour>
    <historique>(si des-fois tu as un historique des coups joués)</historique>
    <joueur>
    <pointdevie></pointdevie>
    <main>
    <carte></carte>
    <carte></carte>
    .....
    </main>
    <deck>
    <carte></carte>
    <carte></carte>
    .....
    </deck>
    <plateau>
    <carte></carte>
    <carte></carte>
    .....
    </plateau>
    </joueur>
    <joueurAdverse>
    ......
    </joueurAdverse>
    <etape>Tour adversaire</etape>
    </partie>
    </xml>
    De cette manière tu pourra facilement retrouver tes petits et pouvoir recharger ton jeu là ou tu en étais .

    Si tu as des questions n'hésite pas, je t'aiderais pour réalisé ce dont tu as besoin en t'aiguillant .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    Mais je n'arrive pas à recharger correctement l'état du jeu, il se trouve dans une boucle while et je ne sais pas comment me repositionner correctement sur l'action a effectuer.
    je n'arrive pas à comprendre où est le problème...
    le plus important d'abord c'est de créer les classes adéquates qui représentent l'univers du jeu de carte.
    Pour ce qui est des patterns faire simple au départ
    Pour ce qui est des cartes il faut les mettre dans des listes ou tableau dynamique.
    Mais on n'a pas beaucoup de détails concernant tes problèmes

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Bonjour,

    merci pour vos réponses.

    Je me suis finalement débrouillé. J'ai utilisé la méthode que tu as décrites Skeud.

    Ça marche bien, pour les actions effectuées par l'IA qui devait être traitées en 1 seul coup, j'ai fais des Mutex sur l'application pour attendre que l'IA est finie son action avant de sauvegarder.
    Quand au fichier, je pousse uniquement les données utiles en XML (sans utiliser de sérialisation pour ne pas être bloqué par les évolutions futures).

    NeoKript

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

Discussions similaires

  1. Jeux de Cartes Bataille
    Par punisher999 dans le forum C#
    Réponses: 1
    Dernier message: 24/09/2008, 09h43
  2. Réponses: 5
    Dernier message: 25/05/2008, 14h50
  3. Programmation de jeux de cartes, quel language utiliser?
    Par Yukizora dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 20/05/2008, 00h28
  4. [Conception] Jeux de cartes : tableau et objet
    Par Burinho dans le forum Collection et Stream
    Réponses: 22
    Dernier message: 30/01/2006, 21h42

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