Jeu puissance 4 graphique sous Windows
Jeu puissance 4 graphique pour Linux
Source jeu puissance 4 console
Source jeu puissance 4 graphique
Mode Console
Afin de bien commencer notre projet et de mener à bien la première partie, nous avons développé un affichage en mode console. Ce premier niveau de conception nous a permis de valider les fonctions de base comme la saisie du coup ou encore la détection de fin de la partie.
Voici un aperçu de notre mode console. On peut apercevoir le programme proposant de l’aide au joueur. Ce mode gère tout type d’exception, l’utilisateur ne peut pas rentrer de chiffres en dehors de l’intervalle ni de lettres.
Mode Graphique
Nous avons crée l’interface graphique grâce à l’outil de conception d’interface glade. Ensuite, grâce à la commande gate, nous avons généré les fichiers à partir de l’interface ainsi modélisée.
Puis nous avons rempli les fichiers « callbacks » permettant de décrire les actions que chaque bouton doit effectuer.
Cependant, l’interface glade créant des fichiers gtk relativement « figés », nous avons décidé de modifier un peu la structure en créant, en fonction du nombre de lignes et de colonnes rentrés dans le paquetage, dynamiquement la grille et les boutons associés.
La mise en oeuvre de gtk n’a pas été facile, il a fallu s’habituer aux différents concepts et apprendre à manipuler cet outil qui s’avère très complet mais peu documenté.
Architecture de notre logiciel
Notre programme est décomposé en 4 grandes parties :
- Tout d’abord, nous avons le programme principal qui lance l’exécutable et invite le joueur à jouer une partie.
- Nous avons ensuite toute la partie graphique qui, comme son nom l’indique va s’occuper de l’affichage et du traitement des données sous forme graphique pour la convivialité du jeu.
- La troisième partie est le module "puissance4" qui quant à lui s’occupe en grand partie de l’aide apportée au joueur ainsi que des fonctions dites de base comme placer le jeton suivant ou encore vérifier le gagnant.
- Enfin, le quatrième et dernier module est l’intelligence artificielle qui va nous permettre de proposer un mode joueur contre ordinateur avec 3 niveaux de difficultés.
Voici sous forme d’arborescence l’architecture de notre programme.
(L’élément à l’origine d’une flèche se sert de celui à la pointe de la même flèche, inversement celui à la pointe est utilisé par celui à la source).
On remarque ici un chemin qui se dédouble. Cela est du au type de joueur choisi. Si l’ordinateur joue, le programme va avoir besoin du module calculia pour faire agir l’ordinateur. Ce module aura besoin de puissance4 pour évaluer chaque coup et jouer le meilleur. Si les deux joueurs sont des utilisateurs, il n’y a aucun besoin de passer par calculia. D’où l’importance de scinder ces deux parties, puissance4 et calculia.
Puissance4 représente la grosse partie de notre programme car c’est lui qui gère tout ce qui concerne le plateau de jeu, le nombre de colonnes et de lignes associés à celui-ci, le type de joueur associé à chaque case de notre plateau… Nous avons pour gérer tout ça décomposé en plusieurs sous-programmes, tels que Initialiser_Plateau, Placer_Jeton, Verifier_Gagnant, Dessiner_Plateau. Autre procedure très importante, « Nb » qui va permettre de trouver le meilleur coup suivant chaque colonne, et dont on se sert quelque soit le mode de joueur.
calculia va, pour chaque colonne jouer un jeton (procédure de puissance4), et ensuite déterminer par le biais de l’évaluation, quel est le meilleur coup à jouer. Suivant le niveau de difficulté, cette procédure pourra anticiper plusieurs coups à l’avance.
Voici un screenshot de partie entre deux joueurs :
Aide au joueur
Afin de rendre le jeu plus convivial, une aide au joueur a été implémentée. Elle indique au joueur quels sont les meilleurs coups à jouer afin de bloquer l’adversaire et gagner la partie.
Pour réaliser cela, une batterie de fonctions ont été mises en place. La principale est Nb, qui parcourt le plateau de jeu dans tous les sens possibles (en colonne, en lignes, en diagonales), et analyse les placements des pions du joueur.
Elle retourne un nombre : plus la situation du joueur est avantageuse, plus il sera élevé. Cette fonction est utilisée pour évaluer les situations quelque soit la prochaine colonne dans laquelle on joue.
Pour chaque coup possible, la situation est évaluée et montre au joueur quel est pour lui le meilleur coup à jouer.
Voici un aperçu en mode graphique et console :
Remarque:
Nb4 a été rajouté pour pouvoir signaler au joueur lorsqu’il peut gagner. Un coefficient très élevé lui a été attribué afin de mettre ce résultat bien en évidence. Pour cette même raison l’affichage des évaluations se fait dans l’ordre décroissant.
Particularités
Tout d’abord le jeu fonctionne aussi bien en mode console qu’en mode graphique.
- Le programme détient une grille redimensionnable (en changeant les constantes nbr_lignes et nbr_colonnes). De plus, l’affichage de l’aide s’adapte en fonction du nombre de colonnes souhaité.
- L’interface graphique permet de compter et d’afficher le nombre de victoires pour chaque joueur. Lorsqu’un joueur gagne, une nouvelle partie recommence automatiquement et les scores augmentent. Le premier à jouer est celui ayant perdu la partie précédente.
- Lors du lancement du jeu, le logiciel propose de changer les noms des deux joueurs. Ceci permet de personnaliser le jeu en indiquant, par alternance, le nom du joueur dont c’est le tour de jouer. Les noms sont également modifiables en cours de partie.
- Le jeu peut être quitté à tout moment, une confirmation est demandée.
- De même le mode de jeu (joueur contre joueur ou contre ordinateur) peut être modifié à tout moment. Par exemple si un joueur quitte la partie l’autre joueur peut continuer à jouer contre l’ordinateur. Les scores sont conservés.
- Le jeu contre l’ordinateur comporte 3 niveaux de difficulté différents. Quelque soit le niveau, le temps de réflexion de l’ordinateur est très rapide.
- Le joueur peut demander de l’aide à tout moment : l’aide affiche les évaluations pour chaque colonne, et indique dans quelle colonne jouer pour obtenir la meilleure situation.
Enfin, le graphique reste fidèle au jeu original et j’ai exporté le logiciel sous Windows grâce à la librairie GTK ce qui garantit une plus grande portabilité.