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

Lazarus Pascal Discussion :

Conception d'un Jeu de Rôle


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de maxiNoob
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 129
    Par défaut Conception d'un Jeu de Rôle
    Je crée ce sujet pour continuer le projet initié sous TPW, c'est donc une migration hardcore

    voilà le sujet initial:

    http://www.developpez.net/forums/d83...r-personnages/

    et voilà le résumé des conseils et évolutions:



    Pour résumer la substantifique moelle de tous vos conseils et de ma pratique:

    pour faire un JDR (RPG) en Pascal:

    1- tout concevoir sur papier: règles, scénario, combats, etc...

    2- choisir un EDI performant (compilateur FreePascal)

    3- concevoir des modules spécialisés (unités)

    4- savoir créer des fichiers sur le disque dur: monstres, armes, objets, héros, ...

    5- bien séparer les données, leur traitement, l'affichage

    6- si possible utiliser la POO pour les monstres et personnages

    7- avoir une bonne cafetière et de l'aspirine

    8- et SURTOUT ! : être inscrit ds les forums de Developpez.com
    si qqu'un est interessé par mon "truc" qu'il hésite pas, mais je ne sais pas comment l'uploader

  2. #2
    Membre confirmé Avatar de maxiNoob
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 129
    Par défaut
    logiquement je bute sur la récupération de mon code

    j'ai d'abord remplacé les commandes Assign par assignFile, close par closeFile

    malgré ça mon fichier de personnages refuse de se charger j'ai une RuntImeError 100: disk read error

    voilà le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Procedure LoadTeam;
    Begin
      NbHerosAlive := 6;
      AssignFile(Persos, PathTeam);
      Reset(Persos);
      for i := 0 to 5 do Read(Persos, perso[i]);
      closeFile(Persos);
      ShowMessage(' !!! Equipe prête à l''Action !!!: '+InttoStr(NbHerosAlive)+' Guerriers');
    End;
    j'ai essayé avec BlockRead sans plus de succés, p-e dois je recréer mon fichier

  3. #3
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Par défaut
    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
     
    Program Example88;
     
    { Program to demonstrate the AssignFile and CloseFile functions. }
     
    {$MODE Delphi}
     
    Var F : text;
     
    begin
      AssignFile(F,'textfile.tmp');
      Rewrite(F); { le fichier est ouvert en écriture et il est vidé}
      Writeln (F,'C''est la permière ligne du fichier.');
      CloseFile(F);
      Append(f);  { Fichier ouvert en mode "ajout" il n'est pas vidé.}
      Writeln (f,'Voilà une ligne ajoutée au fichier textfile.txt');
      CloseFile (f);
    end.
    Je n'ai pas mon compilo sous la main ici, ce bout de code fonctionnera cependant, j'en suis sûr.
    N'oublie pas d'encadrer tes accès fichier par un Try ... Finally/except

  4. #4
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    RunTimeError 100 : Cette erreur est renvoyée par Read si vous tentez de lire au-delà de la fin d'un fichier.
    Pour éviter un arrêt brutal du programme suite à cette erreur d'exécution, utilisez la directive de compilation {$I-} et récupérez le résultat de l'opération par la fonction IOResult.


    Quels sont les types que tu as affecté à "Persos" et "perso" ?

    D'une manière générale, pour lire un fichier et afin de s'assurer qu'on n'en lit pas de trop on procède de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    i:= 0;
    while not EOF(Persos) do
      read (Persos, perso[i]);
      inc(i);
    end;
    ...
    Cordialement.

    Pierre

  5. #5
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    TFileStream ou TMemoryStream pour lire les fichiers!
    ce sera compatible toutes plateformes.


    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
     
    procedure LoadFile(const FileName: string);
    var R, S, N : integer;
         T : TPerso;
    begin
      with TFileStream.Create(FileName, fmOpenRead) do
      try
        N := 0;
        S := SizeOf(TPerso);
        repeat
          R := Read(T, S);
          if R = S then
          begin
            Persos[N] := T;
            inc(N);
            if N > High(Persos) then
              break;
          end;
        until R < S;
      finally
        Free;
      end;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  6. #6
    Membre confirmé Avatar de maxiNoob
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 129
    Par défaut
    richard: ça n'est pas un fichier texte:

    > file of tPerso (fiche record de personnage), je vous la reposte:

    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
     
    Type
      tPerso = record
         name : string[25];
         race : byte;
         carrier : byte;
         level : byte;
         health: integer;
         condition: byte;
         weapon1 : byte;
         weapon2 : byte;
         def: byte;
         money : integer;
         ptExp: integer;
         CaracP : Array[1..8] of integer;
         CaracS : Array[1..8] of integer;
         stuff : array[1..6] of string[15]; {places disponibles pour les objets}
      end;
    l'équipe est composée de 6 héros stockés dans un tableau Perso[0..5]

    ChPr > ça marche, tu avais oublié un begin, pour voir si je suivais c'est ça ?

    Doc> ha je decouvre try et finally, jamais vu ds TPW, je ne comprend pas grand chose à ton code, plus de assign, reset, etc...

    à quel endroit tu indiques le chemin du fichier ?

  7. #7
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    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
     
    { LoadPersoFile
     
       charge le fichier des personnages
     
      parametres :
      
      FileName [input] string, nom du fichier à charger (c:\monjeux\persos.bin)
    }
    procedure LoadPersoFile(const FileName: string); 
    var R, S, N : integer;
         T : TPerso;
    begin
      // creation du stream
      with TFileStream.Create(FileName, fmOpenRead) do
      try
     
        // index du tableau des personnages
        N := 0;
     
        // taille de la structure TPerso
        S := SizeOf(TPerso);
     
        // boucle de chargement
        repeat
     
          // lit un personnage
          R := Read(T, S);
     
          // si la taille lue (R) est égale à la taille de TPerso (S)
          if R = S then
          begin
            // assigner la valeur récupérée (T) dans le personnage (N)
            Persos[N] := T;
     
            // incremente l'index de tableau
            inc(N);
     
            // si N est en dehors du max de personnages acceptable
            if N > High(Persos) then
              break;  // on sort
          end;
     
        // on sort de la boucle si Read n'a pas pus lire une structure
        // complète (fin du fichier ou fichier erroné)
        until R < S;
     
      finally
        // Libère le Stream
        Free;
      end;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

Discussions similaires

  1. [Outil] Jeu de Rôle Creator
    Par -4ian- dans le forum Contribuez
    Réponses: 19
    Dernier message: 27/12/2007, 12h35
  2. Conception d'un jeu de tennis
    Par b Oo dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 17/01/2007, 22h19
  3. Conception d'un jeu de course
    Par zooffy dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 03/11/2006, 19h29
  4. [Conception] Concevoir le jeu Pierre Feuille Ciseau
    Par websurfeur dans le forum Général Java
    Réponses: 14
    Dernier message: 17/03/2006, 19h26
  5. [VB] Aide pour la conception d'un jeu
    Par superbruno dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 17/01/2006, 18h01

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