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

  1. #21
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par richard Voir le message
    Je n'ai pas mon compilateur sous la main ici, mais je ne vois pas en quoi ce programme n'est pas compilable par FreePascal (choisir le mode console dans Lazarus).
    En effet, ce programme doit compiler normalement en mode projet personnalisé, apres avoir remplacé wincrt par crt.
    Voici comment crée un projet personnalisé:
    .Dans le menu projet, choisi "nouveau projet"
    .. dans la boite de dialogue qui s'ouvre, choisis "programme personnalisé" puis un clique sur le bouton "creer".
    .. Tu peux ensuite remplacer le contenu de la fenetre qui s'ouvre par ton programme.

    J'ai suivi ces étape et créé le projet lazarus pour toi. TU trouveras le zip en pieces jointes. Il te reste qu'a le compiler et l'executer. Sinon, j'ai modifier le chemin du fichier en le mettant dans le dossier courant.

    J'ai aussi modifier une partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     case upCase(choix) of
            'C' : cree;
            'A' : ajoute;
            'L' : lecture;
            'M' : modifie;
          end;
    Fichiers attachés Fichiers attachés

  2. #22
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    Doc> je ne vise pas la perfection non plus, j'en suis bien incapable

    j'hésite à tout refaire car je ne sais pas si j'en aurai le courage

    adapter mon code TPW à Lazarus est déjà une sacrée épreuve

    tu adores les variables énumérées, or c'est quasi inexistant des cours et des tutos, aussi j'avais naïvement pensé que c'était secondaire, mais c'est clair que pour la lisibilité c'est le top.

    pour info: le jeu fonctionnait quasiment sous TPW, il me restait à l'enrichir (sort, poisons), et bien sur à cogiter un affichage genre carte 2D

    Richard> oui je pense rester sur ce que je sais faire et le mener à terme sous Lazarus, ça fera effectivement un jeu Version 1, après tout il me faut bien pratiquer et comme tout débutant les premiers projets sont forcément foireux

  3. #23
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    rien est secondaire dans la prog.

    tout et je dis bien tout ce qui est disponible dans un langage est ou peut s'averer utile à un moment.


    les types enuméré sont aussi important que les constantes ou les pointeurs...

    on peu s'en passer ... mais ... ce serait dommage.

    les types enumérés sont comme des constante mais regroupé sous un même type.

    par exemple, pour les caractéristiques, ou je t'avais montrer les indexs en constante (ccAgility, ccForce ...) seront mieux en énumeration.
    c'est d'ailleurs la toute première chose que je t'avais montrer au début de ton projet : un tableau indéxé par une énumération.
    pourquoi ? tout simplement parce que c'est le choix le plus pratique!

    et encore, si tu avais delphi 2009 ou 2010 je pourrais te montrer une implementation de constantes à utiliser comme une enumération mais sans les limitations de types, de nombres de valeurs.
    un exemple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    type
      TCL = record
      public
        const White = $00FFFFFF;
        const Black = $00000000;
        const Blue = $00FF0000;
        const Green = $0000FF00;
        const Red = $000000FF;
        // etc.
      end;
    sympa non ?

    pour en revenir au énumérations, sache que cela ne pose pas de problème au niveau des manipulations.
    chargement par stream, copie ou déplacement par move, copy, pointeur etc.
    tout fonctionne comme un tableau normal.
    juste qu'a la place de chiffre qui ne sont pas parlant, on utilise des identifiants (substitut de valeurs) qui eux sont plus explicite.
    bien sur, l'énumération limite la taille du tableau à 256 valeurs, mais tout l'avantage est ailleurs.

    pose toi la question, qu'est-ce qui est plus facile à manipuler ?

    ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
      Cards : array[0..3] of TCarte;
     
    begin
      Cards[0].Color := clRed; // carreau ou coeur ?
      Cards[1].Color := clBlack; // pic ou trefle ?
      Cards[2].Color := clRed; // idem ?
      Cards[3].Color := clBlack; // heu toujours pas ...
    end;
    ou ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    type
      TCardsName = (cnPic, cnEarth, cnClub, cnDiamond);
     
    var
      Cards : array[TCardsName] of TCards;
     
    begin
      Cards[cnPic].Color := clBlack;
      Cards[cnEarth].Color := clRed;
      Cards[cnClub].Color := clBlack;
      Cards[cnDiamond].Color := clRed;
    end;
    alors ?

    sincérement, quand j'ai ecris le deuxieme exemple, j'ai moi même constater que je n'avais pas eu besoin de reflechir à la couleur à mettre. ce qui est tellement agréable.

    de plus, un autre avantage qu'on evoque pas assé à mon avis, les types énumérés sont pris en charge directement par l'inspecteur d'objet!
    si tu crée un type énuméré dans un composant, paf le type sera pris en charge pars l'IdO sous forme de combobox...
    pas besoin de gestionnaire complexe de propriété à développer.
    mais ... tu n'en ai pas encore ici.

    autre avantage, les trous visible de tableau!
    avec un index classique [0..99] de 0 à 99 donc.
    si par exemple de 5 à 50 je n'ai rien à y mettre ... je vais avoir des valeurs vides et visible!

    avec l'enumération ... je peu avoir des trous invisible!
    exempe :

    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
    type
      TTruc = (
        tcA = 0;
        tcB, tcC, tcD, tcE, // 1, 2, 3, 4
        // premier trou
     
        tcI = tcE+4, // 8
        // deuxieme trou
     
        tcK = tcI+2, // 10
        tcL, tcM, tcN, // 11, 12, 13
        // troisieme trou
     
        tcS = tcN+5, // 18    
        tcT, tcU, tcV, tcW, tcX, tcY, tcZ, // 19, 20, 21, 22, 23, 24, 25, 25
     
        // Bornes min/max ? c'est possible :
        tcMin = tcA, // 0
        tcMax = tcZ  // 25
      );
     
    var
      Tableau1 : array[TTruc] of TMachin;
     
    var
      Tableau2 : array[tcMin..tcMax] of TMachin;

    costaud non ?

    et on peu aussi faire du multidimensionel avec les énums :

    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
     
    type
      TKarma = packed record
        S : byte; // Force
        D : byte; // Dexterité
        V : byte; // Volonté
        C : byte; // Charisme
      end;
     
      TRace = (
        rHuman=0, // Humains
        rDwarf, // Nains
        rElf // Elfs
      );
     
      TSexe = (
        sxXY=0, // Homme
        sxXX // Femme
      );
     
     
    const
      // Tableau des Karmas (peut être stocké dans un fichier en brut)
      Karmas: array[TRace, TSexe] of TKarma = (
        {rHuman}
          {sXY} ((S: 10; D: 8; V: 5; C: 5),
          {sXX}  (S: 8; D: 10; V: 3; C: 7)),
        {rDwarf}
          {sXY} ((S: 12; D: 6; V: 4; C: 2),
          {sXX}  (S: 10; D: 8; V: 4; C: 2)),
        {rElf}
          {sXY} ((S: 9; D: 10; V: 5; C: 7),
          {sXX}  (S: 8; D: 12; V: 4; C: 9))
      );
     
     
    // Définition du karma du nouveau joueur
    var 
      R : TRace; // Sa race
      S : TSexe; // Son sexe
      K : TKarma; // Son karma
    begin
      // -> votre race ? ==> R
      methodeRace(R);
     
      // -> votre sexe ? ==> S
      methodeSexe(S);
     
      K := Karmas[R, S]; // magie magie ... :)
    end;

    voila, encore pleins de choses à potasser
    [ 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!

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Citation Envoyé par maxiNoob Voir le message
    j'hésite à tout refaire car je ne sais pas si j'en aurai le courage
    Sais-tu comment les pygmées mangent un éléphant (1) ?


    Citation Envoyé par maxiNoob Voir le message
    tu adores les variables énumérées, or c'est quasi inexistant des cours et des tutos, aussi j'avais naïvement pensé que c'était secondaire, mais c'est clair que pour la lisibilité c'est le top.
    Page 102 à 118 de Programmez en Turbo Pascal 7 de C. Delannoy. Explication meilleure et plus claire (comme toujours) de J. Colibri dans Découvrez Turbo Pascal sur PC ... Tome 1 malheureusement difficile à trouver aujourd'hui (à un prix raisonnable).

    Citation Envoyé par maxiNoob Voir le message
    Richard> oui je pense rester sur ce que je sais faire et le mener à terme sous Lazarus, ça fera effectivement un jeu Version 1, après tout il me faut bien pratiquer et comme tout débutant les premiers projets sont forcément foireux
    Objectif : obtenir une version fonctionnelle et modulaire similaire à celle qui fonctionnait sous TP7. Ce sera une version de base qui permettra des améliorations. Cette méthode de programmation s'appelle "méthode incrémentale" : tu définis des étapes dans ton programme et dès que les as atteintes, tu passes à l'étape suivante plutôt que de gérer un énorme projet tout de suite. Cela permet d'apprendre au fur à mesure ce dont tu as besoin.

    @ DrWho [ModeHS=on]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     type
      TCardsName = (cnSpade, cnHeart, cnClub, cnDiamond);
     
    var
      Cards : array[TCardsName] of TCards;
     
    begin
      Cards[cnSpade].Color := clBlack;
      Cards[cnHeart].Color := clRed;
      Cards[cnClub].Color := clBlack;
      Cards[cnDiamond].Color := clRed;
    end;
    Je crois , non ? [modeHS=OFF]

    Ce serait bien si tu faisais un petit tuto sur les types énumérés simple et clair comme ça et que tu le mettes à disposition.
    ----------------------------------------------
    (1) morceau par morceau ...
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  5. #25
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    En effet, ce programme doit compiler normalement en mode projet personnalisé, apres avoir remplacé wincrt par crt.
    Voici comment crée un projet personnalisé:
    .Dans le menu projet, choisi "nouveau projet"
    .. dans la boite de dialogue qui s'ouvre, choisis "programme personnalisé" puis un clique sur le bouton "creer".
    .. Tu peux ensuite remplacer le contenu de la fenetre qui s'ouvre par ton programme.

    J'ai suivi ces étape et créé le projet lazarus pour toi. TU trouveras le zip en pieces jointes. Il te reste qu'a le compiler et l'executer. Sinon, j'ai modifier le chemin du fichier en le mettant dans le dossier courant.

    J'ai aussi modifier une partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     case upCase(choix) of
            'C' : cree;
            'A' : ajoute;
            'L' : lecture;
            'M' : modifie;
          end;
    un gros merci, j'ignorai que ds lazarus il fallait ouvrir programme personnalisé pour pouvoir récuperer ses vieux codes, et effectivement ça marche nickel et en plus le fichier est bien lu sans aucun problème

    DOC > clair que tes exemples sont explicites, c'est ce qui manque ds les tutoriels, des exemples, des explications, qui démontrent pourquoi ceci existe.
    mais même si tu as 1000x raisons, je n'ai pas le coeur de tout reprogrammer, j'ai plutot envie d'adapter mon implémentation caca de TPW n'oublies pas mon pseudo

    par contre il est clair qu'il faut que je cogite ça pour l'avenir, déjà je vais essayer de comprendre la modularité, j'avais à peu près compris ça avec les unités de TPW, mais avec lazarus et ses fenêtres ça devient moins limpide, puisque justement affichage et code sont mélangés par la prog évènementielle

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Citation Envoyé par maxiNoob Voir le message
    par contre il est clair qu'il faut que je cogite ça pour l'avenir, déjà je vais essayer de comprendre la modularité, j'avais à peu près compris ça avec les unités de TPW, mais avec lazarus et ses fenêtres ça devient moins limpide, puisque justement affichage et code sont mélangés par la prog évènementielle
    Ca c'est du domaine de la conception, justement. Personnellement je fais d'abord mes unités avec mes objets puis je raccorde le tout la fiche TForm.

    Commence avec un tout petit exercice qui te montrera le principe.

    1) Une unité UCalcul qui comprendra 2 fonctions : ajoute, multiplie.
    2) Un fiche Tform avec deux boutons , un "add", l'autre "mult" deux champs Edit (pour les nombres à multiplier) et un champ label pour afficher le résultat.

    Si c'est vraiment modulaire tu pourras ensuite rajouter la soustraction ou la division en ajoutant simplement un bouton et en modifiant le code de ce dernier.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  7. #27
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Même si tu es amené à changer la structure de tes fichiers, je pense que les tiens sont récupérables. Ton principal problème doit être un problème d'alignement des données et de taille des types utilisés.

    Par exemple, en TPW, il me semble me souvenir qu'un integer est codé sur 16 bits alors qu'il l'est sur 32 en FPC.

    De mémoire aussi, il me semble que les chaînes de caractères limitées comportaient un octet de plus contenant le nombre de caractères (ça l'est peut-être toujours d'ailleurs).

    pour le type perso, tu devrais essayer d'ajouter "packed" au mot record, ce qui fait que cela aligne toutes les données les unes au bout des autres sinon, elles sont alignées sur un critère de 32 bits.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Tperso = packed record
      ...
      ...
    end;
    Maintenant, s'il s'agit d'une cinquantaine de données à retaper, ce n'est pas la mort.

    Cordialement.

    Pierre

  8. #28
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    richard > oui je pense voir:

    - la fiche TForm a son unité: elle contiendra les codes des composants
    - A coté je crée mes fonctions et procédures ds des unités différentes: création des personnages, gestions des fichiers, boutiques, combats, etc...

    en fait ça fera plus d'unités que de fiches

    c'est bien ça ?

    ChPr > grâce à la récupération du code ds lazarus (programme personnalisé), j'ai pu effectivement recréer le fichier de personnage (6 fiches), aussi ça ne sera pas un problème pour le fichier de monstres qu'il faudra effectivement refaire

    j'avais surtout peur d'avoir TOUT perdu, fichiers et code

    repartir de zéro franchement j'aurai pas fait là de suite

    mais quand je serai à l'aise sous lazarus ds qqs mois, pourquoi pas

    vous êtes tellement pédagogue et présents que j'ai une motivation top niveau, même si c'est très dur quand même

    une V1 tout caca comme un brouillon nécessaire pour ne pas bosser ds le vide

    puis une V2 avec Objets, fichiers xml, variables énumérées, etc...

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Citation Envoyé par maxiNoob Voir le message
    richard > oui je pense voir:

    - la fiche TForm a son unité: elle contiendra les codes des composants
    - A coté je crée mes fonctions et procédures ds des unités différentes: création des personnages, gestions des fichiers, boutiques, combats, etc...

    en fait ça fera plus d'unités que de fiches
    C'est ça. Comme ça tu verras l'organisation d'un projet Lazarus avec l'importation des différentes unités. Fais le petit exo que je t'ai donné d'abord, ça t'aidera.

    Citation Envoyé par maxiNoob Voir le message
    puis une V2 avec Objets, fichiers xml, variables énumérées, etc...
    Honnêtement, commence par les variables énumérées par ex. puis par les fichiers xml et ensuite réserve la POO pour une version 3, c'est quand même un gros morceau et il faut AMHA bien maîtriser les unités avant, l'unité étant le premier pas vers "l'encapsulation du code et des données".
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  10. #30
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    @richard :

    oui! cnSpade et cnHeart!

    earth = terre
    heart = coeur

    j'aurais du utiliser le moyen mmt : lionheart -> coeur de lion.
    le bon vieux JDR en 3D iso de Black std.

    erreur de ma part.


    @maxiNoob :

    un tuto ... pfff ... j'ai plus le courage d'ecrire des tutos pour le moment.

    dommage que tu n'ai pas D2007/2009/2010, avec les outils de refactoring, tu vas beaucoups plus vite pour faire les modifs.
    [ 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!

  11. #31
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    Bon qqs nouvelles:

    j'essaie de créer un code modulaire

    j'ai donc une fiche et une seule qui s'appelle: fmAccueil

    et le code se partage pour le moment en unités:

    - jdr.lpr: le projet géré par lazarus

    - F_Accueil: l'unité de la fiche
    - Config: déclaration des types, variables, tableaux
    - Gest_Fichiers: procédures de lecture ou écriture des fichiers
    - Shower: pour afficher, foireuse pour le moment
    le petit souci c'est qu'en compilant, il manque tj qq chose: une variable inconnue par exemple, l'imbrication des unités ds USES n'est pas évidente

    ensuite le module d'affichage (shower) ne marche pas, ainsi l'instruction showMessage est refusée (je suppose qu'il ne sait pas où l'afficher), il me semble qu'il doit chercher une fiche, comment lui dire "affiche ds cette fiche"


  12. #32
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par maxiNoob Voir le message
    ainsi l'instruction showMessage est refusée (je suppose qu'il ne sait pas où l'afficher), il me semble qu'il doit chercher une fiche, comment lui dire "affiche ds cette fiche"

    Il faut ajouter l'unité dialogs, pour pouvoir utiliser le showMessage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    uses {...}, Dialogs;
    Shower est elle une TForm?

  13. #33
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    alors bon voilà, la modularité c'est pas super simple, et je réalise que faire une unité Shower doit correspondre à une fenêtre, donc elle ne peut pas être seule, en tout cas je ne sais pas le faire.

    si vous voulez bien, commençons par ce que je pense avoir compris:

    comme dit le Doc, commençons par le début:
    > conception des personnages (et des monstres) et leur gestion en fichiers


    Voilà l'unité Gest_Fichiers:
    elle fonctionne, y a t il qq chose qui vous choque ? ou j'ai bon ?

    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
    unit Gest_Fichiers;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Config;
     
      procedure LoadTeam;
      procedure SaveTeam;
     
    implementation
     
     Procedure LoadTeam;
    Begin
      AssignFile(Persos, PathTeam);
      Reset(Persos);
      i := 0;
      while not eof(Persos) do
      begin
      Read(Persos, perso[i]);
      inc(i);
      end;
      closeFile(Persos);
    End;
     
    Procedure SaveTeam;
    Begin
      AssignFile(Persos, PathTeam);
      Rewrite(Persos);
      for i := 0 to NbHerosAlive-1 do write(Persos, perso[i]);
      CloseFile(Persos);
      sleep(3000);
    End;
     
    end.
    je rappelle que je crée les personnages avec un petit programme indépendant (BD_Perso) posté qqs messages plus haut

    les variables Persos, Perso[], PathTeam et NbHerosAlive sont déclarées ds l'unité Config

  14. #34
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    C'est si fatiguant que cela qu'il te faille dormir 3 secondes (sleep(3000)) ?

    Cordialement.

    Pierre.

  15. #35
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    heu , disons qu'à la base il y avait un message du genre "fichier sauvegardé" affiché en console par WriteLn, et là comme je ne sais pas afficher qq chose, ya plus de message, du coup j'ai oublié de virer la pause

    mais c'est vrai que je souffre un peu qd même, je commençais à ronronner son console et là patatra, mais il faut bien passer ce cap

  16. #36
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Assure-toi que l'unité "Dialogs" est dans la clause "use" et modifie ainsi ton code d'enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Procedure SaveTeam;
    try
      AssignFile(Persos, PathTeam);
      Rewrite(Persos);
      for i := 0 to NbHerosAlive-1 do write(Persos, perso[i]);
      CloseFile(Persos);
      MessageDlg('Le fichier "'+ExtractFilename(PathTeam)+'" a été sauvegardé', mtConfirmation, [mbOK], 0);
    except
      MessageDlg('Problème : Le fichier "'+ExtractFilename(PathTeam)+'" n''a pas été sauvegardé', mtError, [mbOK], 0);
      CloseFile(Persos);
    end;
    Cordialement.

    Pierre

  17. #37
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    génial , faut vraiment que je potasse la gestions des erreurs entrées/sorties

    et, et , et

    tu avais encore oublié le Begin de la procédure tj pour voir si je suivais

    en tout cas un gros merci, la gestion des fichiers est totalement opérationnelle

    il me reste donc à coder la création des persos ds le jeu (et pas avec l'outil BD)

    donc choix des races, carrieres: listes déroulantes
    puis tirage au sort avec les dés

    ouch

  18. #38
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    Bon j'ai pas mal potassé le cours de Mr Beaulieu sur Delphi et je me sens plus à l'aise avec Lazarus, du coup je continue mon adaptation de Warhammer Vers1

    Je suis en train de plancher sur les caractéristiques (règles du jeu Warhammer)
    Voila à quoi ressemble la fenetre de saisie, dites moi vos critiques

    je vais devoir à présent simuler le lancer de dés, dois je ressortir l'objet du doc ?
    a moins que vous ayez une idée originale ? une image animée par exemple, c'est possible ?

    bref ça avance


  19. #39
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    bon début.

    pour le dés voir PJ en esperant que ça t'inspire, j'avais fait cette demo à l'epoque pour Delphi FR.

    tu peux l'utiliser à ta guise.
    Fichiers attachés Fichiers attachés
    [ 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!

  20. #40
    Membre à l'essai 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
    Points : 18
    Points
    18
    Par défaut
    hé hé mais il est génial ton Dé, (j'ai vu les screenshots)
    c'est impressionant et ça donne envie, surtout avec la place fondamentale que jouent les Dés dans le jeu de role.

    je l'ai réouvert sous lazarus, n'ayant plus delphi, j'ai donc un fichier programme, 2 unités: main et GameDes

    bon par contre c'est que de la POO, aussi je me vois mal adapter ça
    je crois que c'est prématuré pour maxiNoob un tel programme, je commence à peine à me sentir à l'aise ds l'EDI et avec la prog modulaire, et encore ...

    à la compilation il cale sur un type TTimer, j'ai parcouru le code il ne semble déclaré nulle part, manque t il une unité ?

    en tout cas quand j'aurai un peu appris la POO, voilà un programme concret idéal pour travailler, Merci Doc

    Pour le moment j'ai cette function inspirée d e vos conseils:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function aDice(size: integer): integer;      //** simulation de lancer d'un Dé
     
    begin
      aDice := random(size)+1;
      MessageDlg('Lancer d''un  Dé'+IntToStr(size)+' > '+
        IntToStr(aDice),mtConfirmation, [mbOK], 0);
    End;

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