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

Téléchargez Pascal Discussion :

Quatre-en-ligne (Puissance 4) [Sources]


Sujet :

Téléchargez Pascal

  1. #1
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut Quatre-en-ligne (Puissance 4)
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Quatre-en-ligne

    C'est un "Puissance 4" écrit pour Lazarus.

    Nom : quatre-lazarus.png
Affichages : 1235
Taille : 16,4 Ko

    Les points intéressants sont, d'une part, l'emploi de la bibliothèque BGRABitmap, et d'autre part la façon dont l'interface graphique communique avec le moteur de jeu.

    Le moteur est une application console séparée. A chaque fois que l'ordinateur doit jouer, l'interface lance le moteur, au moyen de la fonction RunCommand() de l'unité Process. La liste des coups déjà joués est passé en paramètre, sous la forme d'une chaîne composée de caractères compris entre "1" et "7". Le moteur initialise sa grille interne en fonction de cette chaîne, et renvoie son coup. L'interface peut donc être utilisée avec un autre moteur, sans être recompilée, le nom du moteur étant contenu dans un fichier de configuration.

    Qu'en pensez-vous ?

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

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 582
    Points : 27 825
    Points
    27 825
    Par défaut
    amusant,

    ça me rappelle un très vieux projet de Pascal Peyrmorte sur le jeu "Schlurp"...nom tiré du son produit par ce mini-jeu inclut dans "The 7Th Guest" (un des premiers jeu PC sur CDROM, ça ne nous rajeuni pas !)

    le jeu avait la particularité de proposer un système de plugin pour contrôler l'IA ce qui a donné lieu à un petit concours de programmation.

    http://peyremorte.fr/Programmation/Schlurp/Schlurp.htm
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    C'est intéressant, merci pour le lien. J'ai téléchargé le jeu et les "joueurs" : je vais regarder tout ça de près.

    En attendant, quel serait l'intérêt d'utiliser une DLL plutôt qu'un exécutable ?

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Je me suis rendu compte de certaines lacunes dans mon programme. Si je clique sur une colonne pleine, le pion est quand même ajouté. Si je clique pendant qu'un pion est encore en train de tomber, le pion qui tombe s'arrête et un deuxième pion de la même couleur est ajouté. J'oublie toujours de prendre en compte l'usage incorrect que l'utilisateur pourrait faire du programme.

    Voici le squelette d'un moteur en Pascal. Celui-ci joue au hasard. A vrai dire, il n'est pas tout à fait complet, car il ne vérifie pas si la chaîne passé en paramètre ne correspond pas à une partie déjà finie par la victoire de l'un ou l'autre des joueurs. Mais enfin, c'est pour montrer le principe.

    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
     
    program hasard;
    {$APPTYPE CONSOLE}
     
    var
      h: string; // histoire de la partie
      t: array[1..7]of integer = (0, 0, 0, 0, 0, 0, 0); // tableau pour compter les pions
      r: integer; // réponse
      i: integer; // index
      v: boolean = true; // validité de la chaîne
     
    begin
      h := ParamStr(1);
     
      for i := 1 to Length(h) do
        if (h[i] >= '1') and (h[i] <= '7') then
          Inc(t[i])
        else
          v := false;
     
      if v then
        for i := 1 to Length(h) do
          if t[i] > 6 then
            v := false;
     
      if v then
      begin
        Randomize;
        repeat
          r := Trunc(Random(7) + 1);
        until t[r] < 6;
      end
      else
        r := 0;
     
      Write(r);
    end.
    Une fois ce programme compilé, il n'y a plus qu'à modifier en conséquence le fichier options.ini.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [joueurs]
    blanc=utilisateur
    noir=hasard.exe

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

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 582
    Points : 27 825
    Points
    27 825
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    C'est intéressant, merci pour le lien. J'ai téléchargé le jeu et les "joueurs" : je vais regarder tout ça de près.

    En attendant, quel serait l'intérêt d'utiliser une DLL plutôt qu'un exécutable ?
    l'intérêt principal c'est que tu peux interagir plus facilement entre les deux car ils sont dans le même espace mémoire alors que l'exécutable se lance dans un nouveau process. La DLL peut même en profiter pour préparer les coups suivant pendant que le jour réfléchi alors qu'avec un exe il ne sera relancé qu'au prochain coup.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Bonjour ! Je vous présente la nouvelle version de mon Puissance 4 pour Lazarus.

    Le moteur a été remplacé. Les défauts de la version précédente (signalés plus haut dans cette discussion) ont été corrigés. Enfin, plusieurs couleurs sont disponibles pour l'interface. (Pour modifier la couleur, il faut éditer manuellement le fichier options.ini et choisir l'une des valeurs disponibles : blue, gray, green, indigo.)

  7. #7
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Une nouvelle version est disponible.

    Nom : quatre-lazarus-fr.png
Affichages : 2267
Taille : 12,4 Ko

    L'application console qui servait de moteur a été remplacée par une bibliothèque dynamique.

  8. #8
    Membre confirmé

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 139
    Points : 619
    Points
    619
    Par défaut
    Felicitation pour ce petit jeu.

    Si je puis me permettre, voila une suggestion pour ameliorer l'aspect des pions:
    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
    Uses ..., BGRAGradientScanner;
     
    procedure TForm1.DrawDisk(x, y: integer; c: TBGRAPixel);
    var
      img: TBGRABitmap;
      grad: TBGRACustomScanner;
    begin
      if c = colors[1] then exit;
      img := TBGRABitmap.Create(48, 48);
      if c = colors[2] then
        grad := TBGRAConstantScanner.Create(c)
      else
        grad := TBGRAGradientScanner.Create(ApplyIntensityFast(c,50000),ApplyIntensityFast(c,16000),gtRadial,PointF(8,8),PointF(48,48));
      img.FillEllipseAntialias(
        img.Width / 2,
        img.Height / 2,
        7 * img.Width / 16,
        7 * img.Height / 16,
        grad
      );
      grad.Free;
      image.PutImage(x, y, img, dmDrawWithTransparency);
      img.Free;
    end;
    Cordialement
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  9. #9
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Alors ça c'est très gentil ! J'aime beaucoup le résultat (voir la capture d'écran dans le premier message de cette discussion). Le téléchargement a été mis à jour. Grand merci !
    Images attachées Images attachées  

  10. #10
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Une nouvelle version du jeu est disponible, incluant le moteur Velena de Giuliano Bertoletti.

    Le moteur est écrit en C. Il faut le compiler (en 32 bits, autrement il ne marche pas bien, d'après ce que j'ai pu constater).

    Donc le moteur est une application console. Je voulais au départ continuer sur la solution d'une bibliothèque dynamique mais j'ai eu la paresse d'étudier les subtilités de la compilation et de l'installation des bibliothèques dynamiques sous Linux.

    Mais l'application n'est pas exécutée à chaque coup, comme dans la première version du projet (avec les inconvénients que Paul avait signalés). Elle est exécutée une seule fois, et il y a un dialogue continu entre l'interface et le moteur. J'ai repris la technique utilisée pour les moteurs d'échecs.

    Cette nouvelle version a été testée seulement sous Linux, mais devrait fonctionner aussi sous Windows.

    Téléchargement

  11. #11
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Une nouvelle version du jeu est disponible. La partie graphique a été entièrement refaite.
    Nom : linux-manjaro-french.png
Affichages : 769
Taille : 33,9 Ko
    Téléchargement

  12. #12
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    mars 2003
    Messages
    7 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : mars 2003
    Messages : 7 818
    Points : 57 382
    Points
    57 382
    Billets dans le blog
    2
    Par défaut
    Bonjour Roland,

    Bravo, c'est très réussi !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  13. #13
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 916
    Points : 14 437
    Points
    14 437
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Bravo, c'est très réussi !
    Merci ! J'ai été aidé par Johann, qui a écrit entièrement certaines parties du code (notamment le code pour la chute et le rebond du pion).

Discussions similaires

  1. Le téléphone d'Angela Merkel mis sur écoute par quatre autres puissances
    Par Stéphane le calme dans le forum Actualités
    Réponses: 13
    Dernier message: 28/11/2013, 12h16
  2. [11gR2] Supprimer les doublons de lignes suivant quatre colonnes
    Par lcaya dans le forum SQL
    Réponses: 8
    Dernier message: 08/10/2013, 08h19
  3. Somme de chaque quatre lignes d'une matrice
    Par Naceur_5 dans le forum MATLAB
    Réponses: 5
    Dernier message: 02/03/2013, 05h09
  4. Réponses: 11
    Dernier message: 05/08/2010, 14h19
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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