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. #61
    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

    sinon en parlant de ça, j'ai un pack de portrait de pj tiré des baldur's gates et autres jeux du genre, ça t'intéresse ?
    oui pourquoi pas, ça me donnera des idées, même si j'ai un cahier des charges qui m'arrange: suivre le livre de règles de WH

    mais après pour le scénario je dis pas non

    ________

    Sinon pour revenir au Dés: de toute façon on ne peut qu'approcher le tirage réel, il faudrait déjà savoir comment fonctionne RANDOM pour savoir si c'est adapté, mais on a rien d'autre après tout

    En tout cas l'interface de création de l'équipe est presque prête

    c'est qd même génial cet EDI

  2. #62
    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
    Sinon pour revenir au Dés: de toute façon on ne peut qu'approcher le tirage réel, il faudrait déjà savoir comment fonctionne RANDOM pour savoir si c'est adapté, mais on a rien d'autre après tout
    I
    Random fonctionne normalement sur l'algorithme cité plus bas (avec parfois quelques variations) Il en existe d'autres (des algorithmes) mais il faut soit les implanter soi-même soit trouver des extensions au langage (comme des unités particulières par exemple en Pascal, mais je ne sais pas si cela existe).
    On appelle traditionnellement une telle suite une séquence pseudo-aléatoire (Pseudo Random Sequence , Jack AllGood); pseudo pour bien signifier que de toute façon, ce n'est qu'un pis-aller, on fait comme on peut. Voici quelques extraits d'une documentation tirée d'un site dont j'ai perdu la référence (que l'auteur s'il se reconnaît me le signale ...)
    Qu'est-ce qu'on attend en fait réellement d'un générateur de nombres aléatoires ?

    La réponse à cette question conditionne la méthode à choisir, car dans ce domaine comme ailleurs, tout est affaire de compromis. En général on privilégie quatre critères :

    * la vitesse : il faut que le calcul du nombre pseudo-aléatoire suivant soit rapide. Il n'est pas rare de devoir générer des millions de nombres et on ne peut pas passer sa vie à attendre.

    * la simplicité : ça c'est pour le confort du programmeur, une méthode très compliquée sera très difficile à programmer et surtout à tester. En général, on dit même en forme de boutade que plus l'algorithme est compliqué moins la séquence sera aléatoire.

    * la méthode ne doit pas souffrir de faille grave : on en reparlera plus loin mais l'histoire des générateurs pseudo-aléatoire est pleine d'algorithmes qui se « coincent » lorsqu'ils arrivent sur un nombre particulier. Ce qui est très très gênant car c'est souvent source de plantages qui semblent eux aléatoires et qui sont par conséquent sont très difficiles à mettre en évidence.

    * les nombres produits ne doivent pas faire apparaître de suite logique, quelle que soit la façon de les regarder. Ce critère est le plus difficile à quantifier car il dépend fortement de l'application. Par exemple, imaginons qu'on veuille utiliser un générateur pour simuler un lancé de dés. On va vouloir absolument que tous les nombres de 1 à 6 aient exactement les mêmes chances d'apparaître. Mais si c'est pour jouer au 421, on va vouloir en plus que toutes les suites de deux et trois nombres consécutifs aient aussi exactement les mêmes chances d'arriver. Si la séquence 421 a moins de chances de se produire que 666, certains ne vont pas hésiter à prétendre que les dés sont pipés, et c'est le début des ennuis...

    On dit qu'un générateur pseudo-aléatoire est acceptable s'il a passé avec succès toute une batterie de tests de statistiques généraux (ces tests dépassent très largement la vérification simple que le générateur ne se « coince » pas; au passage ce n'est pas forcément évident à vérifier comme on le verra plus loin).
    Il s'agit bien d'un générateur pseudo-aléatoire qui doit répondre à des contraintes.

    GENERATEURS CONGRUENTIELS LINEAIRES

    Il s'agit de l'algorithme le plus utilisé pour produire des nombres aléatoires depuis qu'il a été inventé en 1948 par D.H Lehmer . C'est la suite :

    xn+1 = ( a * xn + b) mod c
    Tu as la formule magique qui implante la génération des nombres pseudo-aléatoires dans tous les langages dits "évolués" à ma connaissance : C, C++, Ada, Pascal avec parfois quelques (légères ) variations parfois pas.

    Il est difficile de croire qu'une formule si simple puisse produire des nombres suffisamment au hasard et pourtant ....

    Si on désire produire toujours la même séquence (ce qui est pratique à des fins de tests), on rentre toujours la même valeur de x0 (la graine du générateur).
    Si on préfère plutôt que la séquence soit toujours différente, on initialise x0 avec une grandeur toujours différente, l'heure système par exemple (ce que fait la fonction randomize() du C).
    Dans tous les cas, les nombres de la suite sont compris entre 0 et c-1.
    Et ça marche bien ?
    Imaginons à titre d'exemple qu'on choisisse a,b et c tels que :
    xn+1 = ( 25 * xn + 16) mod 256

    Pour x0 = 12, les nombres produits sont : 60 , 236 , 28 , 204 , 252 , 172 ....
    Damned, ils sont tous pairs !!

    Pour x0 = 11, les nombres produits sont : 35, 123 , 19 , 235 , 3 , 91 , 243 ..

    ils sont tous impair ! ! !

    Pour x0 = 10, les nombres produits sont : 10 ,10 ,10 ,10 ....
    Bon sang, voilà qu'il est bloqué maintenant ! ! ! !

    La formule est simple mais le choix des trois paramètres ne doit pas être fait à la légère.

    Pour ne pas retrouver les défauts graves de notre petit exemple, il faut regarder cette suite d'un peu plus près. Si on choisi b non nul , il est toujours possible d'obtenir une période de longueur c (donc pas de risque de bloquage puisqu'on va retrouver tous les nombres entre 0 et c-1 dans la suite). D. Knuth fait la démonstration des critères que doivent remplir a,b et c pour cela :

    * b et c doivent être premiers entre eux
    * a-1 doit être un multiple de p, pour tout p nombre premier diviseur de c
    * a-1 doit être un multiple de 4 si c est un multiple de 4.
    * si c est une puissance de 2, le bit de poids faible des nombres produits vaut altérnativement 0 et 1 (ce n'est d'ailleurs pas le seul cas où cela se produit).
    Bref, un exposé quelque peu ardu surtout pour les moins matheux d'entre nous (dont je fais partie ... ) mais, sans vérifier le calcul de la fonction on comprend que c'est bien du pseudo hasard et que cela sert à simuler des nombres et non pas à modéliser un jet de dés. D'ailleurs il faudrait en toute rigueur s'interroger sur la différence entre deux jets de dés selon la surface utilisée (lisse ou granuleuse) l'état du dé (usés ou non) la force de celui qui l'utilise, etc. etc.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  3. #63
    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 mick605 Voir le message
    ^^ ! Ce que je voulais dire, c'est que pour les tests, tu aurais pu mettre le code en comm pour ne pas le perdre, mais nous montrer les résultats qu'il produit ^^ !

    Donc si j'ai bien compris, sur ton image, a droite, c'est les résultats pour 3 dés a 4 faces ?
    j'ai mis en com les autres formules oui, mais c'est bien les formules utilisée (donc pas en com) qui sont utilisé sur le preview.

    le resultat à droite correspond à 1D10 et non 3D4.
    bizarrement ceci :
    R = 1 + random(10)
    produit une suite lineaire ou tout les nombres ont la même chance de sortir.

    alors qu'avec :
    R = 1 + random(4) + random(4) + random(4) (3+3+3+1 = 10 au max)
    la suite devient plus réaliste avec une distribution "parabolique" ? (dans la forme)

    ce qui est amusant c'est que si on ecrit :

    R = 1 + random(10)
    R = 1 + random(5) + random(6)
    R = 1 + random(4) + random(4) + random(4)
    R = round(10 * (random(101)*0.01));
    R = 2 * random(6)
    R = 1 + (random(round(10 * 10/2 * 10/3 * 10/4)) mod 10)

    les distributions seront toute différentes. comme quoi tout dépend vraiment de la façon dont on utilise random.


    j'ai fait des graphiques et on s'en rend mieux compte :



    Y est exprimé en % de chance de sortie.
    Images attachées Images attachées  
    [ 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. #64
    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 Dr.Who Voir le message

    ce qui est amusant c'est que si on ecrit :

    R = 1 + random(10)
    R = 1 + random(5) + random(6)
    R = 1 + random(4) + random(4) + random(4)
    R = round(10 * (random(101)*0.01));
    R = 2 * random(6)
    R = 1 + (random(round(10 * 10/2 * 10/3 * 10/4)) mod 10)

    les distributions seront toute différentes. comme quoi tout dépend vraiment de la façon dont on utilise random.
    Ces résultats sont bien prévisibles puisqu'il s'agit d'un simple exemple d'analyse combinatoire.
    Si on prend, le cas 1 par exemple, il y a qu'un seul possibilité d'avoir un chiffre prenons par exemple 7. 1+6.
    Alors que dans le cas 2, on peut avoir 7 de plusieurs manieres : 1+3+3, 1+4+2, 1+2+4,...
    Du coup, la probabilité d'avoir 7 est beaucoup plus élevé dans le second cas.

  5. #65
    Invité
    Invité(e)
    Par défaut Des maths... Miam !
    Bonjour,

    J'avais écrit que je ne participerais plus au forum Lazarus (un peu frustré par mes problèmes avec cet IDE) mais quand je lis des maths...

    Pour me rappeler de bons souvenirs, histoire de faire preuve d'un peu de curiosité, un petit tour dans Wikipedia http://fr.wikipedia.org/wiki/G%C3%A9..._lin%C3%A9aire

    Il n'y a pas que dans Lazarus qu'il y a des bonnes "blagues" :

    ... dans l'article Wikipedia à la place de

    ... lire


    Sinon, je ne connaissais rien aux JDR mais la conception me semble très intéressante... comme vos échanges.

    Cordialement. Bonne continuation. Gilles
    Dernière modification par Invité ; 17/12/2009 à 19h12.

  6. #66
    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
    Citation Envoyé par Dr.Who Voir le message
    le resultat à droite correspond à 1D10 et non 3D4.
    bizarrement ceci :
    R = 1 + random(10)
    produit une suite lineaire ou tout les nombres ont la même chance de sortir.
    Pas bizarre, logique ! Un dé de 10 faces : chaque face a la même proba de sortir, d'ou la répartition linéaire ...

    Citation Envoyé par Dr.Who Voir le message
    alors qu'avec :
    R = 1 + random(4) + random(4) + random(4) (3+3+3+1 = 10 au max)
    la suite devient plus réaliste avec une distribution "parabolique" ? (dans la forme)
    Toutes les solutions réalistes ne sont pas paraboliques ...

    Avec ce code, tu testes 3 dés de 4 faces ...

    J'ai l'impression qu'on a un probleme de notation : 1D10 ne signifie pas que les nombres sont tirés au hasard entre 1 et 10, mais que c'est le résultat du lancer de 1 dé a 10 faces. La SEULE solution de modéliser ca est 1+Random(10) ...

  7. #67
    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
    donc en gros,

    1D10 : 1+Random(10)
    2D10 : 2+Random(10)+Random(10)
    1D100+1D10 : 1+Random(10) + (Random(10)*10)

    les premières formules était donc bonnes.
    [ 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. #68
    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
    attention 1D10+ 1D100 ne doivent pas dépasser 100

    les tests s'échelonnent entre [1 et 100]

    en tout cas un gros merci pour votre exploration mathématique du hasard des dés

    __________________________

    la création du personnage est prête , je commence donc la fiche d'inspection qui permet d'avoir tous les détails des héros: carac, materiel, état, sorts, ...

    je me demandais si ça serait pas trop difficile de s'insiprer de la fiche originelle ?

    en voilà un bout:


  9. #69
    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
    Citation Envoyé par Dr.Who Voir le message
    donc en gros,

    1D10 : 1+Random(10)
    2D10 : 2+Random(10)+Random(10)
    1D100+1D10 : 1+Random(10) + (Random(10)*10)

    les premières formules était donc bonnes.
    Oui, même si tu peux faire 1+Random(100) à la dernière.

    Citation Envoyé par maxiNoob Voir le message
    attention 1D10+ 1D100 ne doivent pas dépasser 100

    les tests s'échelonnent entre [1 et 100]

    en tout cas un gros merci pour votre exploration mathématique du hasard des dés

    __________________________

    la création du personnage est prête , je commence donc la fiche d'inspection qui permet d'avoir tous les détails des héros: carac, materiel, état, sorts, ...

    je me demandais si ça serait pas trop difficile de s'insiprer de la fiche originelle ?

    en voilà un bout:

    Pour commencer, tu devrais d'abord te concentrer sur le jeu en lui même, l'interface viendra après ... C'est mon avis

  10. #70
    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
    l'interface viendra après
    c'est aussi mon avis.
    [ 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. #71
    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
    Oui vous avez évidemment raison, mais j'ai besoin d'un inventaire minimal pour pouvoir vérifier que la fiche de personnage fonctionne bien.

    Je vais me concentrer un peu sur le scénario, récupérer mon code de combat de la V1 et réfléchir aux sorts

    tout ça ne me fait pas peur car j'avais bien avancé sous TPW, mais en filigrane je pense à la suite et ce qui m'effraie ce sont les déplacements, je ne vois que 2 systèmes courants pas trop complexes, classiques en RPG:

    - un labyrinthe en 3D (plusieurs niveaux )
    - une carte en 2D dessinée qui scrolle à l'écran

    à ce jour j'ai à peu près aucune idée de comment je pourrais faire ça

    petite situation:

    je réalise à quel point il est fondamental de coder modulairement, et à quel point la séparation des données, traitements etc... l'est aussi, même si pour l'affichage c'est moins facile de le séparer, voilà qqs screens du projet en cours:

    d'abord l'organisation modulaire:


    évidemment c'est plutôt sommaire, et je consacre tout mon temps au code
    mais avec Delphi/lazarus on rentre vraiment ds de l'outil extraordinaire !!

    le menu général:



    l'inspection avec colonnes triables


  12. #72
    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 suis dans l'adaptation du code TPW du combat qui était opérationnel
    et je bute sur l'affichage, en effet sous console c'est plus que limité: WriteLn

    et si je veux afficher tout bêtement un textedu genre:

    "Godeffroi frappe un troll avec son marteau à 2 mains"
    "il réussit à le toucher"
    "il perd 3 points de vie"
    je ne vois pas bien quel composant utiliser (memo, static text, ...)

    vous me dites de ne pas faire l'interface, certes, mais il y a tj un moment où on a besoin d'afficher qq chose pour vérifier que le code fonctionne

    d'autre part quand j'en ai assez de coder, je me suis plongé ds les tutos sur la POO, même si ça ne servira pas pour cette V2

    enfin je dois aussi coder la Boutique, j'aimerai mettre ça sous forme d'un catalogue, j'ai vu qu'il y a des composants TTabcontrol et TPageControl, pensez vous que ça soit adapté pour ce genre de listes ? mais ça a l'air méga compliqué, je crois que je vais rester avec le StringGrid

    mais vous allez me dire, pas encore d'interface

    pourtant je dois tester si mes persos peuvent acheter des armes, armures pour les combats, à la création ils n'ont rien

  13. #73
    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
    Tu peux ecrire des message dans la console avec les fonction debugln(), ...
    Pour voir la console apparaitre chaque fois à l'ecran, dans le panneau projet->option du compilateur, decroche la case application windows.

  14. #74
    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 darryl de répondre aussi vite, mais je réalise que je ne pose jamais les questions avec précision

    ds TPW on ne dispose que d'une seule fonction d'affichage du texte c'est write

    là sous lazarus, je réécris le combat et je veux utiliser tout le potentiel de ce formidable outil qu'est Delphi/lazarus, bref je veux plus voir la console bouh qu'elle est laide !!

    bref vous affichez vos textes comment ?

    avec quel composant ? ds un mémo ? etc ..

  15. #75
    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
    dans une listbox par exemple :

    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
    unit Main;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Windows, Classes, SysUtils, eventlog, FileUtil, LResources, Forms, Controls, Graphics,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        ListBox1: TListBox;
        Timer1: TTimer;
          procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
          procedure Timer1Timer(Sender: TObject);
      private
        { private declarations }
      public
        procedure AddLog(const S: string; const aColor: LongInt= clBlack);
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    { TForm1 }
     
    const
      colorAction = clPurple;
      colorDanger = $000095;
      colorAttaque= clNavy;
      colorDefense= clGreen;
      colorInfos  = clGray;
      colorMort   = clRed;
     
    procedure TForm1.AddLog(const S: string; const aColor: LongInt= clBlack);
    begin
      if ListBox1.Items.Count = 0 then
        ListBox1.Items.Add(S)
      else
        ListBox1.Items.Insert(0, S);
      if aColor <> clBlack then
        ListBox1.Items.Objects[0] := TObject(aColor);
    end;
     
    procedure TForm1.ListBox1DrawItem(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;
     
    var
      C : LongInt = 0;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      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;
      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!

  16. #76
    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
    ouch, tu me fais faire un saut ds l'affichage

    si je comprend ce code, tu crées une fonction AddLog

    J'ai recopié ce code ds mon unité Battle (pas ds l'unité main) en modifiant les noms des composants (form1, listbox1) et pour l'utiliser je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S:='j''affiche ceci dans le ListBox';
    fmbattle.AddLog(S,2);
    et du coup ça marche

    c'est magnifique

    _____________________________________

    par contre je n'arrive pas à programmer ma boutique, quand je renomme la fiche j'ai cette étrange erreur



    ai je créé trop de fiches ?
    est ce un bug de Lazarus ?
    si ça inspire qqu'un ?

  17. #77
    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
    Salut, les rôleurs

    j'ai jamais pratiqué Warhammer, mais il y a quelques années de cela j'ai bosser sur un projet AD&D

    les sources sont toujours disponibles ici.

    avec notamment le module de création de perso qui reprend le HandBook version 2

    exemple:
    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
     
    function ExceptionalStrength: boolean;
    begin
      Result := (Character.Scores[abStrength] = 18)
        and (Character.Race <> Halfling)
        and ((Character.Classes * Warrior) <> []);
    end;
     
    function CanBeOfRace(ARace: TRace): boolean;
    var
      a: TAbility;
    begin
      Result := False;
      for a := Low(TAbility) to High(TAbility) do begin
        if (DiceRoll[a].Total < RacialAbilityRequirements[ARace, a].Min)
          or (DiceRoll[a].Total > RacialAbilityRequirements[ARace, a].Max) then exit;
      end;
      Result := True;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #78
    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
    attention quand tu renome les composants.

    fait des abbrégés mais pas trop :

    Form -> Frm
    Button -> Btn
    ListBox -> LtBx
    ComboBox -> CmBx
    CheckBox -> ChkBx
    RadioButton -> RdBtn
    Edit -> Edt
    Memo -> Mmo
    Panel -> Pnl
    Frame -> Fra (attention Frm=Form)
    Shape -> Shp
    Image -> Img
    PaintBox -> PntBx
    Timer -> Tmr
    Application -> App
    CheckListBox -> ChkLtBx
    Label -> Lbl
    ScrollBar -> ScrBr
    ProgressBar -> PrgBr
    ActionList -> ActLt
    TabControl -> TabCtl
    UpDown -> UpDw
    DateTimePicker -> DTPickr
    HeaderControl -> HdCtl
    TreeView -> TrVw
    ToolBar -> TlBr

    etc.
    [ 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. #79
    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 Paul, j'ai regardé ton site (beaucoup de lien HS) et j'ai récupéré les sources, c'est énorme il y a vraiment beaucoup de choses, beaucoup trop pour qu'un noob comme moi puisse y trouver matière j'ai pas réussi à lancer la démo de votre jeu, il est opérationnel ou c'est un projet inachevé ?

    j'ai surtout besoin de coup de pouce chaque fois que je bute sur un os, ce qui est évidemment fréquent vue la tache colossale que je me suis assignée

    mais sans vous je ne pourrai pas avancer

    -------------

    Doc: j'applique la méthode du cours Delphi de Mr Beaulieu:
    - Form > fmNomdelaFiche
    - ComboBox: cbNomdelaBox
    etc.

    quoi que je mette comme Name, j'ai ce message mystérieux, ça a plus l'air d'un bug, mais c'est p-e moi qui ai fait des bétises

  20. #80
    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
    Et non, ADK Terres de Leyt est malheureusement mort

    enfin il en reste des traces sur le net

    par contre la partie jeu de rôle "Terres de Leyt" existe toujours je pense ici
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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