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

Composants VCL Delphi Discussion :

[10.4.2] TControlList, jeu de dames


Sujet :

Composants VCL Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut [10.4.2] TControlList, jeu de dames
    Bonjour,

    je me suis pris au jeu (c'est le cas de le dire) et, après avoir buché sur le drag&drop entre deux TcontrolList, j'ai voulu faire des essais d'un drag&drop au sein du même TControlList.
    ce qui commence à donner quelques résultats. Vous seriez étonnés du peu de code qu'il m'a fallu pour dessiner un échiquier et ses pièces

    Nom : Capture.PNG
Affichages : 134
Taille : 25,3 Ko

    Maintenant il me faut améliorer la partie déplacements (OnDragOver) et, c'est là ma question, je ne voudrais pas réinventer une roue déjà existante.
    Quelqu'un a t-il connaissance d'un endroit où ce genre de code est déjà écrit (genre défi Delphi, ou opensource) ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Oubliez la question, à peine posée je trouve déjà un premier truc à adapter, mais si vous avez une piste pour que l'adversaire soit un robot ...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    mais il est fou !

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Ah non, c'est un jeu de dames, il n'y a pas de fou. (sauf moi bien sûr )
    ça vaut les dimanches codage de jeux

    Les fous c'est pour un jeu d'échecs (tout aussi faisable maintenant que j'ai le principe de base pour l'échiquier), là j'ai déjà matière, Roland Chastain a déjà écrit pas mal de chose sur la partie "robot" et la dll à utiliser. Mais bon juste pour le plaisir je serais presque tenté de le dessiner entre deux prises de têtes.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Ah non, c'est un jeu de dames, il n'y a pas de fou. (sauf moi bien sûr )
    ça vaut les dimanches codage de jeux
    C'est pas faux mais tu oeuvres en semaine, est-ce légal ?

    Blague à part je me demande ce qui t'est passé par la tête pour vouloir construire un échiquier avec ce composant alors qu'une grille ferait l'affaire (ou des TRectangle en FMX).

    C'était pour le fun ou pour préparer des cas d'exemples en préparation de tu sais quoi pour on ne sait pas encore quand ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par pprem Voir le message
    C'est pas faux, mais tu œuvres en semaine, est-ce légal ?
    Comme le cannabidiol

    C'était pour le fun ou pour préparer des cas d'exemples en préparation
    Un peu de ces deux raisons. Après avoir réalisé un exemple de drag&drop entre deux TControlList (pas très vie réelle) je me suis demandé s'il était possible de le faire en "boucle" sur un seul.
    l'exemple qui m'est venu est un déplacement de pion et la réponse est oui, c'est possible, pour peu d'avoir suivi mes diverses plongées/billets ou d'aller à la pêche dans mon dépôt GitHub il y a déjà pas mal de pistes.
    En fait, ce composant me fait, quelque part, penser au GAP/RPG et son cycle ( ça date de mes débuts 1980). Il a une sorte de cycle interne que j'ai encore un peu de mal à cerner qui fait que je n'ai pas à me préoccuper trop du "dessin", cela se traduirait par "un code, toutes les cases"
    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
     
    procedure TFormJeuDames.ControlList1BeforeDrawItem(AIndex: integer;
      ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState);
    var
      uneCase: TCase;
    begin
     // dessin
      echiquier.TryGetValue(AIndex, uneCase);
      if uneCase.couleur = 0 then
        ACanvas.Brush.Color := clWhite
      else
        ACanvas.Brush.Color := clMaroon;
      ACanvas.FillRect(ARect);
      ARect.Inflate(-4, -4, -4, -4);
      if Assigned(uneCase.pion) then
      begin
        if uneCase.pion.couleur = blanc then
          ACanvas.Brush.Color := clWhite
        else
          ACanvas.Brush.Color := clBlack;
        ACanvas.Ellipse(ARect);
      end;
     
     // reine
      Label1.Caption := EmptyStr;
      if Assigned(uneCase.pion) AND (uneCase.pion.etat = 1) then
      begin
        Label1.Caption := dame;
        if (uneCase.pion.couleur = noir) then
          Label1.Font.Color := clWhite
        else
          Label1.Font.Color := clBlack;
      end;
    end;
    de tu sais quoi pour on ne sait pas encore quand ?
    j'ai encore pas mal de pain sur la planche avec les utilisations de TProtypeBindSource (celui du pire scénario pour les démos )
    je voudrais aussi saisir les subtilités de ce qu'a proposé Jim McKeeth (sur les couleurs "ControlListLiveBinding" dans RadStudio-DemoKit)
    et enfin établir un schéma et une chronologie des divers évènements de façon cohérente.

    D'où le "on ne sait pas encore quand "
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Allez zou, il est fou le Sergio

    Nom : Capture.PNG
Affichages : 95
Taille : 19,1 Ko

    nb. les pieces dépendent de la fonte utilisée ( ici : DejaVu sans)

    et soyons encore plus avant le boulot, quelques images dans une collection et (cela rend même le code plus court)

    Nom : Capture.PNG
Affichages : 93
Taille : 30,9 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. jeu de dame en c
    Par MALAKFATINE dans le forum Projets
    Réponses: 1
    Dernier message: 18/09/2006, 09h34
  2. créer jeu de dame en C
    Par SAMUELSalbert dans le forum C
    Réponses: 11
    Dernier message: 31/07/2006, 20h33
  3. Code source en c d'un jeu de dames
    Par ledawa dans le forum Développement 2D, 3D et Jeux
    Réponses: 33
    Dernier message: 22/05/2006, 08h54
  4. [Jeu de dames]Enregistrer les règles...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  5. probleme pour un jeu de dames en python
    Par doudou152 dans le forum Général Python
    Réponses: 7
    Dernier message: 22/04/2005, 14h53

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