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. #81
    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
    Citation Envoyé par maxiNoob Voir le message
    Doc: j'applique la méthode du cours Delphi de Mr Beaulieu:
    - Form > fmNomdelaFiche
    - ComboBox: cbNomdelaBox
    etc.
    ça c'est bien pour les enum!
    monsieur Beaulieu bien qu'excelent developpeur aurait du y faire attention.

    pour les objet, on essayera plutot de faire "Frm, Btn, CBx" que "fm, bt, cb"
    et on commence par une majuscule pour bien préciser que c'est un nom!
    [ 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!

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Dr.Who Voir le message
    ça c'est bien pour les enum!
    monsieur Beaulieu bien qu'excelent developpeur aurait du y faire attention.

    pour les objet, on essayera plutot de faire "Frm, Btn, CBx" que "fm, bt, cb"
    et on commence par une majuscule pour bien préciser que c'est un nom!
    oui alors sur ce point, je dois dire qu'en 20 ans de programmation, j'ai fait un peu tout et n'importe quoi. Il n'y a pas de norme meilleur que les autres et on se fait très vite à une nouvelle norme. Par exemple, il y a encore 1 an de cela, les propriétés de mes objets étaient notées fProperty avec une identation de 1 espace et je trouvais ça très lisible...entre deux j'ai bossé dans un boîte dont j'ai adopté les normes et maintenant c'est FProperty et 2 espaces...et ça me parait bcp plus lisible depuis
    Dans mon job actuel l'indentation se fait avec des tabulations, pour l'instant je résiste car je n'ai jamais aimé les tabulations...mais je ne jure de rien
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #83
    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
    Citation Envoyé par Paul TOTH Voir le message
    oui alors sur ce point, je dois dire qu'en 20 ans de programmation, j'ai fait un peu tout et n'importe quoi. Il n'y a pas de norme meilleur que les autres et on se fait très vite à une nouvelle norme. Par exemple, il y a encore 1 an de cela, les propriétés de mes objets étaient notées fProperty avec une identation de 1 espace et je trouvais ça très lisible...entre deux j'ai bossé dans un boîte dont j'ai adopté les normes et maintenant c'est FProperty et 2 espaces...et ça me parait bcp plus lisible depuis
    Dans mon job actuel l'indentation se fait avec des tabulations, pour l'instant je résiste car je n'ai jamais aimé les tabulations...mais je ne jure de rien
    tout a fait, tout comme mettre le Begin tout de suite aprés do ou then, ou le mettre à la ligne ...
    pour les propriétés privées ... j'avoue que je préfére le "f" au "F".
    c'est la tout l'avantage et l'inconvénient d'un langage non case-sensitive.
    par contre les vraie tabulation c'est de la m... surtout lors d'un refactoring.
    [ 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. #84
    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
    Paul: sympa la BD c'est vraiment l'ambiance du JDR

    Doc: je potasse encore ton code

    pour la fonction addlog:
    - j'ai compris l'usage de la variable string, mais le chiffre suivant semble indiquer une couleur qui ne change pas, à moins que ça ne soit pas une couleur

    - j'en enfin réussi à comprendre comment utiliser le Timer, même si j'ai du mal avec le code, là aussi les couleurs ne changent pas

    ni le texte ni le fond

    - quant au code du canvas: là je suis plus que paumé

  5. #85
    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
    Paul: sympa la BD c'est vraiment l'ambiance du JDR

    Doc: je potasse encore ton code

    pour la fonction addlog:
    - j'ai compris l'usage de la variable string, mais le chiffre suivant semble indiquer une couleur qui ne change pas, à moins que ça ne soit pas une couleur

    - j'en enfin réussi à comprendre comment utiliser le Timer, même si j'ai du mal avec le code, là aussi les couleurs ne changent pas

    ni le texte ni le fond

    - quant au code du canvas: là je suis plus que paumé
    C'est quoi le probleme avec les couleurs, et l'utilisation du canvas?

  6. #86
    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
    je ne comprend pas comment l'adapter à mon programme

    pour afficher un texte j'utilise AddLog

    mais pour la procedure graphique j'ai pas le mode d'emploi

    elle est censée faire quoi ? dessiner un rectangle ?

    puisqu'on est ds les listbox:

    j'essaie de modifier une couleur de fonte avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form.Listbox.font.color:= clRed;
    et rien n'y fait

  7. #87
    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
    avec des commentaires :

    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
    unit Main;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Windows, Classes, SysUtils, eventlog, FileUtil, LResources, Forms, Controls, Graphics,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        // La listbox
        ListBox1: TListBox;
     
        // le timer
        Timer1: TTimer;
     
        // evenement OnDrawItem de ListBox1
        procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
     
        // evenement OnTimer de Timer1
        procedure Timer1Timer(Sender: TObject);
      private
        { private declarations }
      public
        // procedure qui permet d'ajouter une chaine (S) avec une couleur (aColor)
        // différente ou non des autres dans ListBox1
        procedure AddLog(const S: string; const aColor: LongInt= clBlack);
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    { TForm1 }
     
    // on definit quelques couleurs 
    const
      colorAction = clPurple; // couleur du texte d'une action
      colorDanger = $000095; // couleur du texte quand il y à danger
      colorAttaque= clNavy; // couleur du texte pour les attaques
      colorDefense= clGreen; // couleur du texte pour les defense
      colorInfos  = clGray; // couleur du texte pour les infos
      colorMort   = clRed; // couleur du texte pour un joueur qui meurt
     
     
    // la procedure AddLog
    // ajoute la chaine S dans listBox1 avec une couleur de texte 
    // definit par aColor (noir si non définit).
    procedure TForm1.AddLog(const S: string; const aColor: LongInt= clBlack);
    begin
      // si il n'y a pas encore de texte dans ListBox1
      if ListBox1.Items.Count = 0 then
        // on ajoute S avec Add
        ListBox1.Items.Add(S)
      else
        // sinon on inser S en première position (index 0)
        ListBox1.Items.Insert(0, S);
     
      // si aColor est diférent de noir
      if aColor <> clBlack then
        // on précise la couleur de la chaine en utilisant
        // la propriété Objects[] de Items (TStrings)
        ListBox1.Items.Objects[0] := TObject(aColor);
    end;
     
     
    // procedure de dessin des items de listBox1
    // qui est appelé pour déssiner chaque chaine.
    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
    var vColor   : LongInt; // permet de récupérer la couleur de la chaine
        vListBox : TListBox; // stock temporairement ListBox1
        vStyle   : TTextStyle; // definit le style du texte
    begin
      // on récupère la listbox appelante de cette procedure
      vListBox := TListBox(Control);
     
      // si Objects[index] est différent d'une valeur nulle
      if vListBox.Items.Objects[index] <> nil then
        // on récupère la couleur de définit pour cette chaine dans vColor
        vColor := LongInt(vListBox.Items.Objects[index])
      else
        // sinon on ecrit en noir par défaut
        vColor := clBlack;
     
      // on éfface le contenus de la zone de la chaine
      vListBox.Canvas.FillRect(ARect);
     
      // on définit la couleur de la police d'écriture
      vListBox.Canvas.Font.Color := vColor;
     
      // on définit quelques propriétés supplémentaire pour
      // que le dessin se fasse comme on le souhaite 
      vStyle.Alignment  := taLeftJustify; // aligné à gauche
      vStyle.Clipping   := false; // pas de clipping
      vStyle.ExpandTabs := false; // ne prend pas en charge les tabulations
      vStyle.Layout     := tlCenter; // aligné verticalement au centre
      vStyle.Opaque     := true; // n'est pas transparent
      vStyle.SingleLine := true; // on ecrit sur une seule ligne
      vStyle.Wordbreak  := false; // on ne coupe pas les phrase
     
      // enfin, on ecrit la chaine dans la listbox.
      vListBox.Canvas.TextRect(ARect, ARect.Left+2, ARect.Top, vListBox.Items[index], vStyle);
    end;
     
     
    { démonstration automatique du resultat }
     
    var
      C : LongInt = 0; // compteur d'appel à l'evenement OnTimer de Timer1
     
    // evenement OnTimer de Timer1
    // ajoute une phrase dans listbox1 via la procedure AddLog
    // toute les X secondes (selon réglage du timer)
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      // par rapport à la valeur en cours de la variable C
      case C of
        0: AddLog('Démarrage de la partie', colorInfos);
        1: AddLog('Des goblins vous attaques!', colorDanger);
        2: AddLog('Perceval prépare un plan d''attaque', colorAction);
        3: AddLog('Arthur attaque le goblin le plus proche', colorAttaque);
        4: AddLog('Caradoc commet une maladresse et se tue', colorMort);
        5: AddLog('Bohort s''enfuis comme un lache', colorAction);
        6: AddLog('Le maitre du jeux s''ennuis', colorInfos);
      end;
      // on incremente C dans l'intervalle 0 à 6 uniquement (voir le case)
      C := (C + 1) mod 7;
    end;
     
    initialization
      {$I Main.lrs}
     
    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!

  8. #88
    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 DOC t'as reçu le "paquet" ?

    merci pour les explications, mais j'ai adapté ton code au mien
    AddLog fonctionne très bien mais pas les couleurs
    ma ListBox s'appelle lbBattleScreen:

    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
     
     procedure TfmBattle.lbBattleScreenDrawItem(Control: TWinControl;
       Index: Integer; ARect: TRect; State: TOwnerDrawState);
     var vColor   : LongInt;
        vListBox : TListBox;
        vStyle   : TTextStyle;
     begin
      vListBox := TListBox(Control);
      if vListBox.Items.Objects[index] <> nil then
        vColor := LongInt(vListBox.Items.Objects[index])
      else
        vColor := clBlack;
     
      vListBox.Canvas.FillRect(ARect);
      vListBox.Canvas.Font.Color := vColor;
     
      vStyle.Alignment  := taLeftJustify;
      vStyle.Clipping   := false;
      vStyle.ExpandTabs := false;
      vStyle.Layout     := tlCenter;
      vStyle.Opaque     := true;
      vStyle.SingleLine := true;
      vStyle.Wordbreak  := false;
     
      vListBox.Canvas.TextRect(ARect, ARect.Left+2, ARect.Top, vListBox.Items[index], vStyle);
    end;
    je ne vois pas comment changer ça, si je tape Addlog(S,2) c'est bien 2 qui est la couleur ? de 0 à 6 ? c'est bien ça ?

  9. #89
    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
    Il y a un truc que j'aimerais savoir. Pourquoi utiliser un listBox, alors vous dessiner les textes directement dans le canvas? Faudra donc aussi gerer le scrolling et autres trucs vous meme, si vous utiliser toujours cette methode.

  10. #90
    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
    Citation Envoyé par maxiNoob Voir le message
    Alors DOC t'as reçu le "paquet" ?

    merci pour les explications, mais j'ai adapté ton code au mien
    AddLog fonctionne très bien mais pas les couleurs
    ma ListBox s'appelle lbBattleScreen:

    je ne vois pas comment changer ça, si je tape Addlog(S,2) c'est bien 2 qui est la couleur ? de 0 à 6 ? c'est bien ça ?

    paquet reçu ... c'est une horreur ... il faut organiser et nommer mieux que ça tes unités et projets!
    ne melange pas la façon de nommer les unité :
    un fois c'est Truc_Machin_Bidule et une autre TrucChouette ...

    je te conseil de faire un répertoire JDRU (Unités du JDR) puis de nommer tes unités :
    JDRNom (JDRTypes, JDRClasses, JDRTools, ...)

    pour le projet, nettoie les anciens fichiers. nomme ton projet correctement je n'ai pas su lequel ouvrir !
    attention de bien fournir toutes les unités.

    ps : lazarus fout vraiment tout et n'importe quoi comme fichiers dans les répertoires ... c'est vraiment le brin ce truc....



    l'adaptation est nickel.


    tu n'est plus en TP/TPW finit les 16 couleurs du DOS/Windows.
    ici la couleur est exprimée n RGB true color (24bits (3*8bits)) ou l'on ecrira en hexa :
    $BBGGRR (ordre bleu, vert, rouge)

    exemple :
    $FFFFFF = blanc (constante clWhite)
    $000000 = noir (constante clBlack)
    $0000FF = rouge (constante clRed)
    $00FF00 = vert (constante clLime)
    $FF0000 = bleu (constante clBlue)
    $C0C0C0 = gris clair (constante clSilver)
    $808080 = gris medium
    $404040 = gris foncé
    $FFFF00 = cyan
    $00FFFF = jaune
    $FF00FF = magenta

    si tu retiens bien les valeurs :
    $00 = 0% de la couleur
    $80 = 50% de la couleur
    $40 = 25% de la couleur
    $C0 = 75% de la couleur
    $FF = 100% de la couleur

    tu pourra facilement créer quelques variantes simples :

    $400000 = bleu foncé
    $800000 = bleu medium
    $C00000 = bleu
    $FF0000 = bleu clair

    $8040C0 = 50% de bleu, 25% de vert, 75% de rouge, melange qui donnera un rose foncé, un peu couleur yaourt à la framboise.

    $8080FF = 50% de bleu, 50% de vert, 100% de rouge, melange qui donnera un rose trés lumineux, un peu rose fluo.

    $00C0FF = 0% de bleu, 75% de vert, 100% de rouge, melange qui donnera un jaune puissant, un peu jaune lamborghini.

    $0080FF donnera de l'orange
    $C0FFFF donnera un jaune trés pale
    $C08080 donnera une couleur un peu lavande

    et si l'on veux créer une rampe complète :

    $000000 noir

    $400000
    $800000 bleu marine (navy)
    $C00000
    $FF0000 bleu

    $FF4000
    $FF8000
    $FFC000
    $FFFF00 cyan (aqua)

    $C0FF00
    $80FF00
    $40FF00
    $00FF00 vert (lime)

    $00FF40
    $00FF80
    $00FFC0 citron vert (sytrus)
    $00FFFF jaune (yellow)

    $00C0FF
    $0080FF orange
    $0040FF
    $0000FF rouge (red)

    $4000FF
    $8000FF fuschia
    $C000FF
    $FF00FF magenta

    $FF00C0
    $FF0080 violet
    $FF0040
    $FF0000 bleu


    si tu assigne 2 à AddLog tu obtiendra donc $000002 qui sera du noir trés trés nuancé rouge (nuance qui sera invisible à l'oeuil nus)
    [ 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. #91
    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 Dr.Who Voir le message
    paquet reçu ... c'est une horreur ...
    je t'avais prévenu

    Citation Envoyé par Dr.Who Voir le message
    il faut organiser et nommer mieux que ça tes unités et projets!
    ne melange pas la façon de nommer les unité :
    un fois c'est Truc_Machin_Bidule et une autre TrucChouette ...

    je te conseil de faire un répertoire JDRU (Unités du JDR) puis de nommer tes unités :
    JDRNom (JDRTypes, JDRClasses, JDRTools, ...)

    pour le projet, nettoie les anciens fichiers. nomme ton projet correctement je n'ai pas su lequel ouvrir !
    attention de bien fournir toutes les unités.
    oki je vais essayer de faire comme tu dis .


    Citation Envoyé par Dr.Who Voir le message
    l'adaptation est nickel.
    enfin un compliment

    Citation Envoyé par Dr.Who Voir le message
    tu n'est plus en TP/TPW finit les 16 couleurs du DOS/Windows.
    ici la couleur est exprimée n RGB true color (24bits (3*8bits)) ou l'on ecrira en hexa :
    $BBGGRR (ordre bleu, vert, rouge)

    exemple :
    $FFFFFF = blanc (constante clWhite)
    $000000 = noir (constante clBlack)
    $0000FF = rouge (constante clRed)
    $00FF00 = vert (constante clLime)
    $FF0000 = bleu (constante clBlue)
    $C0C0C0 = gris clair (constante clSilver)
    $808080 = gris medium
    $404040 = gris foncé
    $FFFF00 = cyan
    $00FFFF = jaune
    $FF00FF = magenta...

    si tu assignes 2 à AddLog tu obtiendra donc $000002 qui sera du noir trés trés nuancé rouge (nuance qui sera invisible à l'oeuil nus)
    merci pour cet exposé, mais pour AddLog, si je mets AddLog(S,clGreen) ça ne marche pas, je ne comprend pas ce qu'il faut mettre comme valeur

  12. #92
    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
    mmm bizarre chez moi ça marche parfaitement.
    [ 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!

  13. #93
    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
    argh

    j'ai fait un essai, simple, j'ai fermé le ProjetJDR et j'ai juste créé une fiche et j'ai copié ton code avec 1 listBox et 1 timer, puis créé le lien évènementiel entre eux et ton code: ça marche très bien, sauf les couleurs

    mais bon ça n'est pas le plus grave, j'ai p-e "déréglé" lazarus

    pour le moment je me contenterai du texte noir

    ________________________________

    sinon je ne parviens pas à temporiser l'affichage du texte

    sous TPW j'avais la fonction Delay, que j'insérais après chaque message

    normalement là il y a Sleep
    mais au lieu d'afficher les lignes une après l'autre, il affiche plusieurs lignes d'un coup après la temporisation

    c'est la bonne méthode ?

    __________________________________


    Je vais grâce à cette interface, pouvoir travailler les 6 actions possibles:

    - Attaque (2 armes au choix)
    - Parade (augmente la difficulté du test des monstres)
    - Magie (pour les héros qui ont ce talent)
    - Objets (fiole de soin, potion magique, explosifs,...)
    - Fuir (tentative reussie ou pas)

    voilà comment j'ai commencé:
    l'action sera choisie par le héro et stockée ds une variable tableau: ActionHero[0..5] (une liste déroulante faisant l'affaire)

    Après validation du choix du personnage, j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    case choix of
     
      0: HeroAttack;  // arme 1
      1: HeroAttack;  // arme 2
      2: Parry;
      3: Magic;
      4: TryToFlee;
    les actions 0, 1 et 2 sont à peu près opérationnelles
    _____________________________________________________________

    Rem: j'ai eut beaucoup de mal à adapter le code du combat de TPW car celui ci tournait seul dans une double boucle de tour de jeu en suivant les index des joueurs et des monstres.

    mais là avec la méthode évènementielle, je me suis perdu et en fait j'ai pas pu conserver ce code initial, les boucles étant inadaptées, ou du moins j'ai pas su l'adapter

    heureusement que je vous ai écouté et que j'ai quitté TPW, mais je ne regrette pas ce super exercice de code pur puisque l'EDI est minimaliste et l'interface graphique inexistante, mais effectivement après avoir découvert la fonction "programme personnalisé" de Delphi/Lazarus, on a plus du tout besoin d'un EDI aussi ancien.

  14. #94
    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
    qqs nouvelles:

    l'échoppe est opérationnelle, les armes, armures et objets ont été stockés dans des tableaux avec leur prix et leur valeur en combat

    j'ai vu qu'il existait un systeme TPage control pour gerer un affichage de pages avec onglets, mais je n'ai trouvé aucun tuto pour en expliquer l'utilisation, du coup 5 petits boutons font l'affaire

    voilà un aperçu:



    par contre se profile à présent la gestion de l'affichage du jeu, j'ai vu qu'il y avait un tuto sur les jeux ds le site je vais y jeter un oeil

    en fait j'aimerai avoir soit un simple labyrinthe filaire, des plus classique ds les JDR, mait c'est de la 3D, soit une carte qui scrolle à l'écran

    si vous avez des suggestions

  15. #95
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Le TPageControl est simple a utiliser :
    Tu inseres le composant, tu crées des pages avec "clic droit > Nouvelle page"
    Ensuite, sur chaque page, tu met tes composants.

    Dans ton cas, il vaut mieux utiliser un TTabControl. La différence est qu'un composant inseré sur un Tab est présent sur toutes les tabs. Pour actualiser l'affichage de ces composants, tu geres les evenements OnChange et OnChanging (F1 pour plus d'infos)

    Sinon, je vois que ton projet avance bien, tu es tres motivé en tout cas. Je ne pense pas que je serais arrivé au bout ... Continue

    Bonne chance !

  16. #96
    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
    merci mick de tes conseils et encouragements, la motivation c'est la clé de tout

    voila la situation:

    on peut créer son équipe
    l'équiper dans l'armurerie
    la sauvegarder
    faire une combat
    se soigner au temple

    bref tous les éléments de base sont disponibles
    ce week-end neigeux qui s'annonce devrait me permettre de réaliser la magie des combats et l'utilisation des objets (fiole, poison, explosifs, ...)

    tj pas d'idée sur la temporisation ni sur l'affichage 3D ?

    au fait ce qui sont intéressés, vous pouvez me contacter
    attention c'est un NoobCode

  17. #97
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Bonjour,

    L'affichage 3D, pouquoi pas OpenGL?
    Pour la temporisation, tu pourrais peut être récupérer ton ancien code et le faire tourner dans un thread, non? Sinon, c'est le Timer, il me semble.

    Bon WE neigeux.

  18. #98
    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
    finit et améliore déjà le moteur du jeu.

    ne t'étale pas partout au risque de ne plus savoir ou donner de la tête.

    une fois que tout sera parfait coté moteur, tu pourra commencer à reflechir sur l'affichage et le gameloop.

    pour l'affichage, tu pourra au choix passer par la SDL par exemple ou un moteur de jeux 2D ou 3D quelconque compatible avec Delphi/Lazarus.

    sinon tu as des moteurs "prés à l'emploi" :
    OGRE par exemple http://www.ogre3d.org/
    tu as aussi des moteurs complets comme Unity : http://unity3d.com/unity/
    qui necessitera de retranscrire tes codes delphi en script unity (assé simple).
    ou encore l'UDK (encore en beta) http://udk.com/index.html
    [ 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!

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    hello,

    de mon expérience de développeur...le plus compliqué reste le graphisme
    afficher des sprites ou des objets 3D c'est pas si compliqué que ça, mais pour que ça ai l'air de quelque chose il faut bien choisir les graphismes, les textures, les animations etc...et ça c'est pas un boulot de programmeur
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  20. #100
    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
    Parhélie > ha ok, faut que je potasse ce timer, merci du conseil

    Doc > oui tu as raison, comme d'habitude , j'ai mes 2 fils en Béta- testeurs et ça buggue bien comme il faut donc ya encore du taf pour stabiliser tout ça, c'est que mine de rien, yen a un paquet de lignes de code

    d'ailleurs j'aimerai bien que certains d'entre vous testouille le machin, mais là je demande beaucoup

    j'hésite tj entre un labyrinthe en 3D (filaire) et une carte 2D qui scrolle, de toute façon faut d'abord que je potasse les tutos du site, en verra ça donc ds qqs semaines, je compte sur vous pour m'aider dans cette aventure

    Paul > pas un boulot de programmeur

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