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

Contribuez Pascal Discussion :

Projet d'un programme de jeu d'échecs


Sujet :

Contribuez Pascal

  1. #221
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Note: bonne nouvelle, les gens de Lazarus ont commencé à appliquer les modifications que j'ai envoyé.
    Bonne nouvelle en effet ! De mon côté j'ai poli mon code (pièce jointe plus haut). Il me paraît bien. La prochaine étape est de surcharger les procédures pour pouvoir les appeler avec des arguments du genre "e2e4" (au lieu de nombres) et sans avoir à passer l'index de la pièce.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #222
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    @circular17

    Je m'aperçois que je n'ai pas prévu le retournement de l'échiquier. Est-ce que par hasard il serait possible de retourner l'écran virtuel au moment de le dessiner dans la fenêtre et de le garder à l'endroit le reste du temps, de façon à dessiner toujours à l'endroit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TMainForm.FormPaint(Sender: TObject);
    begin
      virtualscreen.Draw(Canvas, 0, 0 + 24);
    end;
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #223
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Je m'aperçois que je n'ai pas prévu le retournement de l'échiquier. Est-ce que par hasard il serait possible de retourner l'écran virtuel au moment de le dessiner dans la fenêtre et de le garder à l'endroit le reste du temps, de façon à dessiner toujours à l'endroit ?
    Oui, tu peux faire cela par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TMainForm.FormPaint(Sender: TObject);
    begin
      virtualScreen.VerticalFlip;
      virtualscreen.Draw(Canvas, 0, 0 + 24);
      virtualScreen.VerticalFlip;
    end;
    Cela dit, s'il y a des ombrages, ils seront dans la direction opposée.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  4. #224
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Cela dit, s'il y a des ombrages, ils seront dans la direction opposée.
    Merci pour ta réponse et pour le code mais oui, tu as raison, ce n'est pas la bonne approche.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #225
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Voilà, ce n'était pas la mer à boire, et cela m'a obligé à retravailler le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      if democlock > 0 then
      begin
        if democlock mod 100 = 0 then
          case democlock div 100 of
            1: Draw32Pieces(STD_PLACEMENT);
            2: MovePiece('e2e4');
            3: MovePiece('d7d5');
            4: begin ErasePiece('d5'); MovePiece('e4d5'); end;
            5: TransformPiece('d5', 'wq');
            6: EraseBoard(TRUE);
            7: begin FlipBoard; democlock := 1; end;
          end;
        Inc(democlock);
      end;
    À manipuler avec précaution : c'est la version marbre.

    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #226
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    @circular17

    Tu n'aurais pas sous la main un marbre dans les tons blanc, noir, ou blanc, gris, noir ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #227
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 126
    Points
    15 126
    Par défaut
    Salut la compagnie,

    je réapparais, j'ai 5 minutes (j'attends des réponses pour mon autre truc hautement prioritaire), j'en profite.

    Ton bout de code avec les coordonnées des pièces me fait penser à quelque chose dont je voulais vous entretenir :
    Citation Envoyé par Roland Chastain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      if democlock > 0 then
      begin
        if democlock mod 100 = 0 then
          case democlock div 100 of
            1: Draw32Pieces(STD_PLACEMENT);
            2: MovePiece('e2e4');
            3: MovePiece('d7d5');
            . . .
      end;
    ]
    Voilà : je voudrais bien savoir comment vous imaginez votre projet, en termes de dialogues avec les "engines" (comme on dit), et d'abord, combien d'engines ?
    - engine adversaire ;
    - engine validateur de ce que joue l'humain avant de passer la main à l'adversaire ;
    - etc.

    Parce qu'en l'espèce, dans ton bout d'exemple, il n'y a rien qui empêche de faire e2 b6 ! Oui c'est complètement idiot, mais de ce que j'en vois, il n'y a rien qui l'empêche, d'accord ? (Je ne suis pas allé voir dans le code car je me fais envoyer sur les roses avec des dépendances non satisfaites [liées à fpgui, de mémoire]...)

    Dans mon cas, j'ai commencé à regarder du côté de la notation FEN, j'ai terminé les parseurs string vers plateau et plateau vers string, c'est OK (sauf les informations "exotiques" au bout de la chaîne [coups, notations, etc.], à voir + tard), mais après ?

    Merci de vos retours,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #228
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonsoir Jipété !

    Comme je vois les choses, le programme principal et l'interface graphique ne font qu'un. Il y a un sous-programme "arbitre", un sous-programme "moteur", un sous-programme "livre".

    Effectivement tu peux déplacer à ta guise les pièces sur mon échiquier, comme sur un vrai.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #229
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Ah oui, apres, il faut verifier la validite des deplacements.

    Il y a deux choses a distinguer :
    PeutAtteindre - est-ce que la piece peut atteindre la position en question (ce qui depend de la piece et des pieces sur le chemin)
    PeutJouer - est-ce que la piece peut y aller sans mettre son propre roi en echec

    Pour tester PeutJouer, il faut en fait tester pour toutes les pieces adverses si elles peuvent atteindre le roi (comme PeutAtteindre avec les pieces adverses).
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  10. #230
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 126
    Points
    15 126
    Par défaut
    Bonsoir les copains,
    Citation Envoyé par Roland Chastain Voir le message
    Comme je vois les choses, le programme principal et l'interface graphique ne font qu'un.
    Ah, moi je les ai déjà séparés : le programme principal c'est le grand ordonnanceur, et l'interface graphique (du plateau de jeu) c'est un client, comme l'adversaire.

    Citation Envoyé par Roland Chastain Voir le message
    Il y a un sous-programme "arbitre", un sous-programme "moteur", un sous-programme "livre".
    Citation Envoyé par circular17 Voir le message
    Il y a deux choses a distinguer :
    PeutAtteindre - est-ce que la piece peut atteindre la position en question (ce qui depend de la piece et des pieces sur le chemin)
    PeutJouer - est-ce que la piece peut y aller sans mettre son propre roi en echec
    Et ces choses, c'est vous qui les écrivez ou ça peut se trouver tout fait, genre j'ai un code "validateur" et je lui passe la string FEN du coup que je suis en train de jouer et s'il est conforme ce "validateur" me renvoie OK et ce coup devient valide, l'IHM déplace la pièce et c'est à l'adversaire de jouer.

    Parce qu'honnêtement, je ne me vois pas écrire ce genre de choses... Rien qu'un truc simple comme la validation d'un roque, j'ai failli péter une durite dans la tête,

    Citation Envoyé par Roland Chastain Voir le message
    Effectivement tu peux déplacer à ta guise les pièces sur mon échiquier, comme sur un vrai.
    Ben nan, sur un vrai tu te ferais remonter les bretelles par l'arbitre et/ou l'autre joueur, si tu t'amusais à reculer avec les pions ou à faire déplacer la dame comme un cavalier ! Tu vois le délire ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #231
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Ben nan, sur un vrai tu te ferais remonter les bretelles par l'arbitre et/ou l'autre joueur, si tu t'amusais à reculer avec les pions ou à faire déplacer la dame comme un cavalier !
    Oui, c'est ce que je disais.

    Autrement, je suis en train de chercher dans les exemples fpGUI comment on peut capturer les clics de la souris sur l'échiquier.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  12. #232
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Terminé le déplacement des pièces avec la souris ! Cliquez sur la case de départ puis sur la case d'arrivée.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  13. #233
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 126
    Points
    15 126
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Terminé le déplacement des pièces avec la souris ! Cliquez sur la case de départ puis sur la case d'arrivée.
    Euh, y a pas de pièces qui s'affichent sur ton joli plateau en marbre

    Et en cliquant sur Start dans le menu, on se retrouve avec l'exemple automatique d'il y a qq jours...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #234
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Merci Jipété. Effectivement ce n'était pas la bonne archive. C'est corrigé.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  15. #235
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    euh il autorise même les déplacement non autorisé ?

    plus sérieusement tu ne contrôle pas le type de déplacement selon les pièces et si'il y a un obstacle devant tu autorise quand même le déplacement
    pour un cavalier je peux comprendre mais pour les autre pièces c'est pas top
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  16. #236
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    @anapurna

    Merci pour ton observation. En effet, il n'y a presque aucun contrôle : c'est juste un échiquier avec ses pièces.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  17. #237
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Et ces choses, c'est vous qui les écrivez ou ça peut se trouver tout fait, genre j'ai un code "validateur" et je lui passe la string FEN du coup que je suis en train de jouer et s'il est conforme ce "validateur" me renvoie OK et ce coup devient valide, l'IHM déplace la pièce et c'est à l'adversaire de jouer.

    Parce qu'honnêtement, je ne me vois pas écrire ce genre de choses... Rien qu'un truc simple comme la validation d'un roque, j'ai failli péter une durite dans la tête,
    Ah ben c'est cela le challenge. Sinon quel intéret d'écrire un jeu d'échec ?

    Un validateur a partir de la chaine pour le déplacement n'est pas possible, parce qu'il faut prendre en compte :
    - les pieces qu'il y a sur l'échiquier
    - l'état du roque (au départ les deux tours peuvent roquer et ensuite elles perdent cette capacité)
    - si un pion vient de faire un bon de deux cases, il peut etre mangé sur la case intermédiaire, ce qui rajoute un déplacement possible du point de vue des pions adverses (et il faut alors enlever le pion en question si ce déplacement en fait)

    Citation Envoyé par Roland Chastain
    En effet, il n'y a presque aucun contrôle : c'est juste un échiquier avec ses pièces.
    Oui, l'echiquier "physique", quoi.

    Citation Envoyé par Jipété Voir le message
    l'interface graphique (du plateau de jeu) c'est un client, comme l'adversaire.
    Que veux-tu dire par adversaire ? Parles-tu de code qui joue pour l'ordinateur ?

    Sinon, en fait, l'interface graphique n'est pas le client du programme principale mais le contraire. Le programme principal depend de ses composants.

    Citation Envoyé par Jipété Voir le message
    Ben nan, sur un vrai tu te ferais remonter les bretelles par l'arbitre et/ou l'autre joueur, si tu t'amusais à reculer avec les pions ou à faire déplacer la dame comme un cavalier ! Tu vois le délire ?
    Ben cela depend s'il y a un arbitre à coté de toi et le cas échéant de son tempérament, et si tu es dans une partie avec quelqu'un ou pas. Tu peux jouer avec un échiquier physique sans suivre les regles du jeu.

    Sinon peut-etre est-ce que tu exprimes de l'impatience d'avoir un jeu d'échec virtuel avec toutes les regles mises en oeuvres.

    Citation Envoyé par Roland Chastain Voir le message
    Terminé le déplacement des pièces avec la souris ! Cliquez sur la case de départ puis sur la case d'arrivée.
    Ah oui, c'est joli, avec le marbre et tout.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  18. #238
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 126
    Points
    15 126
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Ah ben c'est cela le challenge. Sinon quel intéret d'écrire un jeu d'échec ?
    Rien que la gestion des clics sur la stringgrid, si on veut que ça soit joli, c'est pas rien.
    Et bien séparer la couche "métier" (les règles du jeu) de la couche système (échange des données entre l'adversaire et son code, l'humain et sa souris, et l'ordonnanceur qui pilote tout ça, c'est du taf !

    Citation Envoyé par circular17 Voir le message
    Un validateur a partir de la chaine pour le déplacement n'est pas possible, parce qu'il faut prendre en compte :
    - les pieces qu'il y a sur l'échiquier
    - l'état du roque (au départ les deux tours peuvent roquer et ensuite elles perdent cette capacité)
    - si un pion vient de faire un bon de deux cases, il peut etre mangé sur la case intermédiaire, ce qui rajoute un déplacement possible du point de vue des pions adverses (et il faut alors enlever le pion en question si ce déplacement en fait)
    Pas trop d'accord avec ton analyse, là, car l'ordonnanceur aura à sa disposition la chaîne FEN du dernier coup joué (ou plutôt, proposé par le dernier joueur pour validation), et la chaîne du coup précédent (on peut même avoir toutes les chaînes depuis le début de la partie, il suffit de les stocker dans une stringlist).
    Par exemple, lorsqu'une tour bouge, il suffit de le noter dans la chaîne FEN (c'est prévu) pour savoir qu'à partir de ce moment le roque du côté de cette tour n'est plus possible.

    Citation Envoyé par circular17 Voir le message
    Que veux-tu dire par adversaire ? Parles-tu de code qui joue pour l'ordinateur ?
    Yes. Mais je ne dirais pas "qui joue pour l'ordinateur", je dirais plutôt "qui joue avec son code" en utilisant l'ordinateur pour afficher ses résultats.

    Citation Envoyé par circular17 Voir le message
    Sinon, en fait, l'interface graphique n'est pas le client du programme principal mais le contraire. Le programme principal depend de ses composants.
    Oui, enfin, je vois plutôt ça comme deux adversaires (un "engine" et moi) sur un ring (l'interface graphique), avec un arbitre qui compte les coups, vérifie leur validité et tout ce genre de choses (le programme principal)...

    Citation Envoyé par circular17 Voir le message
    Ben cela depend s'il y a un arbitre à coté de toi et le cas échéant de son tempérament, et si tu es dans une partie avec quelqu'un ou pas. Tu peux jouer avec un échiquier physique sans suivre les regles du jeu.
    Oui, mais je n'en vois pas l'intérêt, en ce qui me concerne.

    Citation Envoyé par circular17 Voir le message
    Sinon peut-etre est-ce que tu exprimes de l'impatience d'avoir un jeu d'échec virtuel avec toutes les regles mises en oeuvres.
    C'est pas faux, c'est pas faux, avec aussi l'envie de voir s'affronter deux engines, pour voir comment ça se comporte.
    Mais on n'y est pas encore !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #239
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Rien que la gestion des clics sur la stringgrid, si on veut que ça soit joli, c'est pas rien.
    Et bien séparer la couche "métier" (les règles du jeu) de la couche système (échange des données entre l'adversaire et son code, l'humain et sa souris, et l'ordonnanceur qui pilote tout ça, c'est du taf !
    Ah ben ce n'est pas fait en trois minutes.

    Pas trop d'accord avec ton analyse, là, car l'ordonnanceur aura à sa disposition la chaîne FEN du dernier coup joué (ou plutôt, proposé par le dernier joueur pour validation), et la chaîne du coup précédent (on peut même avoir toutes les chaînes depuis le début de la partie, il suffit de les stocker dans une stringlist).
    Par exemple, lorsqu'une tour bouge, il suffit de le noter dans la chaîne FEN (c'est prévu) pour savoir qu'à partir de ce moment le roque du côté de cette tour n'est plus possible.
    Ah oui, je vois. C'est intéressant théoriquement, cela dit, ce n'est pas tres optimal, par exemple si on veut faire une IA et qu'il faut calculer plein de coups à l'avance. Il faut quelque chose d'equivalent, mais plus simple a accéder, pour avoir un maximum de rapidité.

    Yes. Mais je ne dirais pas "qui joue pour l'ordinateur", je dirais plutôt "qui joue avec son code" en utilisant l'ordinateur pour afficher ses résultats.
    Ce qui compte, c'est qu'on se comprenne.

    Oui, enfin, je vois plutôt ça comme deux adversaires (un "engine" et moi) sur un ring (l'interface graphique), avec un arbitre qui compte les coups, vérifie leur validité et tout ce genre de choses (le programme principal)...
    Je comprends.

    Oui, mais je n'en vois pas l'intérêt, en ce qui me concerne.
    Oui je comprends que ce qui t'intéresse, c'est de jouer contre l'ordinateur avec des regles.

    C'est pas faux, c'est pas faux, avec aussi l'envie de voir s'affronter deux engines, pour voir comment ça se comporte.
    Mais on n'y est pas encore !
    Ah la je suis d'accord avec toi, cela peut etre le fun.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  20. #240
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 126
    Points
    15 126
    Par défaut
    Bnsoir Roland,
    Citation Envoyé par Roland Chastain Voir le message
    Pour répondre à ce message de Jipété, je poste ici une unité tirée de mon jeu d'échecs, avec son mode d'emploi. C'est une unité qui permet de connaître (entre autres) la liste des coups légaux pour telle position d'une partie d'échecs. Voilà, Jipété, j'espère que cette unité te sera utile, ou te donnera au moins des idées. En y remettant le nez, j'ai trouvé que le choix des noms de variables et de fonctions (sans parler du nom de l'unité elle-même) n'était peut-être pas très heureux : peut-être en trouveras-tu de meilleurs.
    Je reviens vers toi deux minutes à propos de ton post que je cite, que je n'arrive pas à faire fonctionner dans le sens où, quoi que je passe à ton programme demo, il me répond toujours OK

    Pourtant, le début de l'unité demo.pas stipule
    La position doit être fournie sous la forme d'une chaîne FEN (notation Forsyth-Edwards).
    Si on passe une chaîne vide, la position est la position conventionnelle de début de partie.
    Et donc, si je fais ./demo ça me répond OK
    si je fais ./demo rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 ça me répond OK
    si je fais ./demo e2e4 pour voir, ça me répond OK
    et si je fais ./demo lksbhfkgj hsq ekshbfibnqsnkbair ça me répond encore OK !

    Une idée du pourquoi du comment ? Une astuce à la compilation que j'ai loupée, avec ces "assert" ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. [Flash Pascal] Projet d'un programme permettant de visualiser une position du jeu des échecs
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 11
    Dernier message: 21/06/2015, 09h05
  2. Projet Jeu d'échec
    Par Layla dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2010, 13h06
  3. Jeu d'échec borland soap
    Par rpoulin dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/10/2005, 05h02
  4. Help ! Programmer un jeu vidéo
    Par Jay Bee dans le forum DirectX
    Réponses: 7
    Dernier message: 18/03/2004, 18h38
  5. Help ! Programmer un jeu vidéo...
    Par Jay Bee dans le forum OpenGL
    Réponses: 3
    Dernier message: 05/03/2004, 15h34

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