Téléchargé 22 fois
Vote des utilisateurs
2
0
Détails
Licence : Non renseignée
Mise en ligne le 26 août 2020
Plate-formes :
Linux, Windows
Langue : Français
Référencé dans
Navigation
Quatre-en-ligne (Puissance 4)
Quatre-en-ligne (Puissance 4)
C'est un "Puissance 4" écrit pour Lazarus.
Bonjour,
Je vous propose un nouvel élément à utiliser : Quatre-en-ligne
C'est un "Puissance 4" écrit pour Lazarus.
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 ?
Je vous propose un nouvel élément à utiliser : Quatre-en-ligne
C'est un "Puissance 4" écrit pour Lazarus.
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 ?
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.
Une nouvelle version du jeu est disponible. La partie graphique a été entièrement refaite.
Téléchargement
Téléchargement
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.
Une fois ce programme compilé, il n'y a plus qu'à modifier en conséquence le fichier options.ini.
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 |
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. |
Code : | Sélectionner tout |
1 2 3 | [joueurs] blanc=utilisateur noir=hasard.exe |
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.)
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.)
Une nouvelle version est disponible.
L'application console qui servait de moteur a été remplacée par une bibliothèque dynamique.
L'application console qui servait de moteur a été remplacée par une bibliothèque dynamique.
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 !
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/S...rp/Schlurp.htm
ç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/S...rp/Schlurp.htm
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 ?
En attendant, quel serait l'intérêt d'utiliser une DLL plutôt qu'un exécutable ?
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.