Introduction Ce projet de printemps pour mon option complémentaire Informatique sera sous forme d'un jeu de puissance 4 impossible à battre. Un site sera créer par moi-même en langage HTML, PHP et CSS, et le but sera de le rendre beau pour que cela soit agréable de venir perdre à une partie de puissance 4. Le plus gros problème que je vais devoir affronter sera sans doute la programmation du jeu, qui est complexe car un algorithme imbattable est toujours dur à programmer.

Matériel et méthodes Aucun matériel n'est nécessaire à la réalisation de ce projet, excepté un ordinateur bien sûr. En premier lieu, je mettrais en place le jeu et l'algorithme nécessaire à la création du puissance 4, puis je créerai la page internet qui est un travail secondaire de ce projet.

Le premier travail à réaliser comme dit précédemment est le codage du jeu. C'est la partie la plus complexe du projet, car il faut créer une grille avec des valeurs dans chaque case pour pouvoir les changer quand on appuie dessus. Afficher la grille demande déjà des connaissances assez poussées dans le langage PHP. Il faut créer un tableau à l'aide de la commande "array", puis mettre toutes les valeurs que nous voulons dedans, en ayant au préalable déclaré toutes ses valeurs. Puis il faut réussir à faire que dès que l'on appuie sur une case de la grille, sa valeur change. Ensuite, il faut créer la règle qui dit que l'on ne peut pas appuyer sur une case si il n'y a rien dessous, car les cases appuyées doivent toujours être "sur" quelque chose, que ce soit une autre case déjà avec une valeur modifiée ou alors la dernière ligne du tableau. J'ai personnellement opté pour la façon de faire la moins rapide, mais la plus compréhensible pour moi, qui est de dire pour chaque case quand on a le droit de changer une valeur d'une case ou pas.

Ensuite vint le plus gros problème que je n'ai pas réussi à surmonter. L'intelligence artificielle du jeu (IA). Je n'ai tout simplement pas su comment créer une IA, ce qui a abouti à l'échec de mon projet. Mais j'en parlerai plus en profondeur dans la section Discussion de ce billet. Malgré que je n'ai pas réussi à créer cette IA et que donc mon projet était voué à l'échec, j'ai continué à me renseigner sur les possibilités de créer un jeu du puissance 4. Quelque chose de pas très important mais néanmoins utile pour mon projet est que le jeu du puissance 4 est résolu, tout comme le morpion. Il existe une manière de gagner à coup sûr, et c'est tout simplement de commencer en choisissant la colonne du milieu, vu que les puissance 4 on toujours un nombre de colonne impaire. Après ce premier coup, le deuxième ne joueur ne peut tout simplement pas gagner. Il peut au maximum provoquer une égalité. Donc pour mon projet, il aurait fallut que l'ordinateur commence toujours la partie par jouer dans la colonne du milieu.

En faisant des recherches, j'ai pu voir que la plupart des gens qui ont créer un jeu similaire ont presque tous utilisé des langages que nous n'avons pas encore vu en classe, tels les langages Javascript ou encore C. Je n'ai rien trouvé à propos d'un puissance 4 en langage PHP, à part un code fait pour jouer à deux et non contre une IA. Tout ce que j'ai trouvé sur une puissance 4 en PHP était sur des forums et toutes les réponses étaient du genre: "Ne fait pas en PHP mais plutôt en C c'est plus facile". Je suis donc allé voir du côté du jeu du morpion pour voir si des codes existaient et si je pouvais m'en inspirer pour créer un puissance 4, vu que le principe est environ similaire. Je suis tombé sur un code entièrement réalisé en PHP pour un jeu de morpion et qui en plus utilise l'algorithme min-max.

L'algorithme min-max est un algorithme utilisé dans la programmation pour tout ce qui est des jeux contre une IA. Cet algorithme permet à l'ordinateur de calculer quel est le meilleur et le pire coup possible. Le problème de cet algorithme est qu'il est extrêmement long et compliqué, et que le calibrer pour faire ce que l'on veut demande des connaissances poussées de la programmation. Mais pour l'utiliser, il faut créer un autre page contenant le code de l'algorithme, et ensuite créer le jeu en commençant par le code "require_once", qui va permettre à la page où le jeu se trouve d'executer le code de la page comprenant l'algorithme. Pour mieux imager, imaginons que j'insère le code de l'algorithme dans une page et que je l'appelle "minmax". Je devrai commencer en premier par écrire le code "require_once('minmax').

Après cela, il faut encore définir les différentes manières de gagner une partie. Il faut définir les trois manières, qui sont de gagner en ligne, en colonne ou en diagonale. Il faut entrer une commande qui va détecter à chaque tour si il y a 4 valeurs égales l'une à côté de l'autre, l'une au-dessus de l'autre et la plus compliquée, en diagonale. La seule manière que j'ai vu pour détecter ceci est d'énumérer toutes les possibilités de diagonales et de vérifier à chaque tour si l'une de ses possibilités est existante sur le jeu.

Puis vient juste la partie en langage HTML et CSS pour embellir le site et écrire des indications.

Résultats

Le projet se trouve sur le site http://dev.gyre.ch/noah.ajani/Bats-moi.php. Et comme on peut l'apercevoir, il n'y a rien du tout. En effet, comme dis précédemment, je n'ai pas réussi à trouver comment programmer une IA et par manque de temps et aussi de motivation, j'ai juste avancer au maximum que je pouvais malgré le fait que ceci n'aboutira nul part. Je me suis retrouvé en cette fin d'année surchargé de devoir et de projet à rendre et j'ai malheureusement dû faire des choix et répartir mon temps de travail sur toutes les branches. Je n'ai donc pas pu travailler sur ce projet en profondeur comme je l'aurai voulu et c'est dommage, car à part l'IA que je ne savais pas comment créer, le reste du projet aurait été peut-être faisable.

Discussion

Je pense personnellement que le puissance 4 était trop ambitieux pour moi, qui suis juste un simple amateur d'informatique. Le morpion me paraissait plus atteignable, et c'est pour cette raison que c'était mon idée de base. Je n'ai clairement pas les compétences pour réaliser un projet aussi compliqué que le puissance 4 et c'est une des raisons de mon découragement quand j'ai remarqué à quel point j'ai eu de la peine pour ne serait-ce qu'afficher la grille du puissance 4. Après il est vrai que les différences ne sont pas énormes entre le morpion et le puissance 4, la principale étant les conditions de victoires et la complexité de l'algorithme. Malheureusement, comme dit précédemment, je n'ai pas eu le temps de plonger complètement dans la réalisation de ce projet dû à l'énorme amont de travail à accomplir ces dernières semaines.

Conclusion

Au final, malgré cet échec, j'ai beaucoup appris sur le langage PHP et sur l'informatique en général aussi. Le plus important pour moi n'était pas forcément la réussite, mais plutôt l'apprentissage, et je pense avoir appris plein de chose en tentant ce puissance 4.