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

Free Pascal Discussion :

Programme qu'on interrompt et dont on peut reprendre le contexte d'exécution plus tard


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Informaticien
    Inscrit en
    Août 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Août 2002
    Messages : 40
    Par défaut Programme qu'on interrompt et dont on peut reprendre le contexte d'exécution plus tard
    Bonjour à Tous,

    Je dois faire un programme de jeu. A un moment donné, le joueur peut interrompre le jeu et reprendre le jeu plus tard avec son historique. Je pense que je dois utiliser le fichier, mais je ne sais pas comment je dois reprendre le contexte d'exécution... Quelqu'un pourrait me donner des idées.
    Merci.

    Augustin

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    et bien il suffit f'enregistrer dans un fichier toutes les variables d'état (position, équipement, pv ...) pour les recharger au lancement.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Voici un exemple basique pour illustrer la réponse précédente.

    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
    {$APPTYPE CONSOLE}
    {$MODE DELPHI} // Result
     
    program QuelJour;
     
    { Nom du fichier : QuelJour.pas
      Description    : Jeu pour montrer le principe de la sauvegarde d'une partie.
      Compilation    : FreePascal. }
     
    uses
      Crt,      // ClrScr, ReadKey
      SysUtils; // DayOfWeek, Now
     
    const
      nomFichier = 'partie.txt';
     
    type
      tJour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
     
      tEnregPartie = record
        nomJoueur: string;
        essai: integer;
      end;
     
    function Aujourdhui: tJour;
    begin
      Result := dimanche;
      Inc(Result, DayOfWeek(Now)-1);
    end;
     
    var
      partieCourante: tEnregPartie;
     
    procedure InitialisationStandard(var aPartie: tEnregPartie);
    begin
      ClrScr;
      WriteLn('Nom du joueur ?');
      ReadLn(aPartie.nomJoueur);
      aPartie.essai := 1;
    end;
     
    procedure SaisieReponse;
    var
      entree: string;
      jour: tJour;
      erreur: integer;
    begin
      ClrScr;
      WriteLn('Votre proposition ?');
      ReadLn(entree);
      Val(entree, jour, erreur);
      if (erreur = 0) and (jour = Aujourdhui) then WriteLn('Vrai !') else
        WriteLn('Faux !');
      Inc(partieCourante.essai);
      WriteLn('Appuyez sur ENTREE...');
      ReadLn;
    end;
     
    procedure Sauvegarde;
    var
      f: text;
    begin
      Assign(f, nomFichier);
      Rewrite(f);
      WriteLn(f, partieCourante.nomJoueur);
      WriteLn(f, partieCourante.essai);
      Close(f);
    end;
     
    procedure Menu;
    begin
      ClrScr;
      WriteLn('(* ----------------------- *)');
      WriteLn('(* Quel jour sommes-nous ? *)');
      WriteLn('(* ----------------------- *)');
      WriteLn('');
      WriteLn('Nom du joueur : ', partieCourante.nomJoueur);
      WriteLn('Essai : ', partieCourante.essai);
      WriteLn('');
      WriteLn('Menu : [N] Nouvelle partie');
      WriteLn('       [P] Proposer une r‚ponse');
      WriteLn('       [Q] Quitter le programme (1)');
      WriteLn('');
      WriteLn('(1) La partie en cours sera sauvegard‚e.');
      case ReadKey of
        'N', 'n': InitialisationStandard(partieCourante);
        'P', 'p': SaisieReponse;
        'Q', 'q': begin
                    Sauvegarde;
                    Halt;
                  end;
      end;
    end;
     
    function ChargeDernierePartie: boolean;
    var
      f: text;
    begin
      Assign(f, nomFichier);
      {$I-}
      Reset(f);
      {$I+}
      Result := IOResult = 0;
      if Result then
      begin
        ReadLn(f, partieCourante.nomJoueur);
        ReadLn(f, partieCourante.essai);
        Close(f);
      end;
    end;
     
    begin
      if not ChargeDernierePartie then
        InitialisationStandard(partieCourante);
      while TRUE do
        Menu;
    end.

  4. #4
    Membre averti
    Profil pro
    Informaticien
    Inscrit en
    Août 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Août 2002
    Messages : 40
    Par défaut programme qu'on interrompt et dont on peut reprendre le context d'exécution plus tard
    Merci beaucoup Roland Chastain pour votre réponse. Elle est pertinente. Je vais essayer cette solution. Encore merci.

    Antezi

Discussions similaires

  1. Réponses: 11
    Dernier message: 18/11/2010, 11h07
  2. Un richtextbox dont on peut arrondir les coins pendant l'exécution
    Par nazimyenier dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 19/08/2009, 15h01
  3. Réponses: 11
    Dernier message: 26/04/2007, 16h34
  4. Quels sont les tâches dont on peut supprimer ?
    Par bertrand_declerck dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 11/01/2006, 16h31
  5. Réponses: 20
    Dernier message: 01/06/2005, 09h37

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