Simulation de Pierre Papier Ciseaux par ChatGPT

Créer une simulation dynamique avec ChatGPT sans programmer

Créer une simulation dynamique avec ChatGPT sans programmer est la suite de l’article sur comment Créer un jeu de tir avec ChatGPT sans programmer.

En effet, l’idée est de demander à ChatGPT de générer le code informatique de la simulation du jeu Pierre Papier Ciseaux en lui expliquant uniquement ce que la simulation doit faire.

Dans le cas présent, la simulation concerne le jeu bien connu Pierre Papier Ciseaux.

Tous les prompts et les codes sont à télécharger en fin d’article.

Installer Python pour la simulation

L’installation de l’environnement Python est nécessaire pour exécuter la simulation de ChatGPT.

Premièrement, avec ce lien de téléchargement, téléchargez l’installateur de ce logiciel.

Dès la première fenêtre d’accueil de l’installateur, cochez les options qui vous simplifient l’installation, comme Add python.exe to PATH, Use admin privileges when installing py.exe.

Installateur Python
Installateur Python

Ensuite, cliquez sur Customize installation et cochez toutes les options dans la fenêtre Optional Features, dont la case de PIP.

Puis cliquez sur le bouton Next : la fenêtre Advanced Options apparaît.

Dans cette fenêtre, cochez au minimum les 4 options : Install Python 3.12 for all users, Associate files with Python, Create shortcuts for installed applications, Add Python to environment variables.

Installateur Python Advanced Options
Installateur Python Advanced Options

Puis, cliquez sur le bouton Install pour lancer l’installation.

À la fin de l’installation, cliquez sur le bouton Close pour fermer la dernière fenêtre.

Installer Pygame pour la simulation

Une fois l’installation de Python terminée, il faut installer une bibliothèque qui se nomme Pygame.

Cette installation est particulièrement simple grâce à PIP, qui a été installée en même temps que Python.

Notamment, ouvrez une invite de commandes en appuyant simultanément sur les touches Windows + S, puis en cliquant sur Invite de commandes.

Puis dans cette invite de commandes, tapez la commande :

pip install pygame

Enfin faites entrée. C’est tout.

pip install pygame
pip install pygame

Avertissement lié à l’utilisation de ChatGPT

Lisez l’avertissement lié à l’utilisation de ChatGPT qui est dans l’article qui s’intitule Intérêt de ChatGPT.

Construction du cadre de la simulation

En effet, suite à l’expérience de Créer un jeu de tir avec ChatGPT sans programmer, nous savons qu’il est préférable de Prompter progressivement et d’être précis dans nos demandes.

En particulier, ChatGPT varie dans ses réponses. Pour une même question, il fournit des réponses légèrement différentes.

Version initiale de la simulation avec ChatGPT (V1)

Notre prompt initial :

Créons une version simulée du jeu classique Pierre-Papier-Ciseaux, avec une vue de dessus.

Dans notre simulation, une pierre est représentée par un caillou gris, le papier par une feuille blanche avec un bord marron, et les ciseaux par une paire de ciseaux rouge.

  • Si une pierre entre en contact avec du papier, le papier l’emporte et la pierre disparaît.
  • Si une pierre touche des ciseaux, la pierre est victorieuse, brisant et éliminant les ciseaux.
  • Lorsque le papier rencontre les ciseaux, ces derniers triomphent, entraînant la déchirure et la disparition du papier.

Au démarrage, le jeu initie avec cinq éléments de chaque type (pierre, papier, ciseaux), se mouvant de façon aléatoire sur l’aire de jeu. Le fond de l’aire de jeu est uni et blanc.

Il est crucial de concevoir le jeu pour qu’il soit évolutif, permettant l’ajout progressif de nouvelles caractéristiques et mécanismes. Cette conception modulaire soutiendra l’évolution constante du jeu. La priorité est de supprimer tous les bugs potentiels et de suivre rigoureusement les directives fixées.

Première réponse de ChatGPT

Pour développer une simulation du jeu Pierre-Papier-Ciseaux avec une perspective de dessus, nous pouvons procéder par étapes :

  1. Définition des objets :
    • Pierre : petit caillou gris
    • Papier : petite feuille de papier blanche avec un bord marron
    • Ciseaux : petite paire de ciseaux rouges
  2. Règles d’interaction :
    • Papier bat Pierre : la Pierre disparaît
    • Pierre bat Ciseaux : les Ciseaux se cassent et disparaissent
    • Ciseaux battent Papier : le Papier se déchire et disparaît
  3. Logique de jeu :
    • Au démarrage, générer 5 objets de chaque type (Pierre, Papier, Ciseaux) sur une surface de jeu blanche.
    • Ces objets se déplacent de manière aléatoire sur la surface de jeu.
    • Lorsqu’un objet en touche un autre, appliquer les règles d’interaction pour déterminer le vainqueur et retirer l’objet perdant.
  4. Conception modulaire :
    • Organiser le code de manière modulaire pour faciliter l’ajout de nouvelles fonctionnalités.
    • Utiliser des fonctions distinctes pour la création des objets, la détection des collisions, et la mise à jour du jeu.
  5. Élimination des bugs :
    • Tester le jeu à chaque étape de développement pour s’assurer qu’il n’y a pas de bugs.
    • Corriger les bugs immédiatement après leur détection pour maintenir la qualité du jeu.
  6. Développement itératif :
    • Développer le jeu par itérations successives, en ajoutant des fonctionnalités et en affinant le gameplay étape par étape.

ChatGPT propose aussi une version en pseudo-code.

Pseudo-code (extrait)
Pseudo-code (extrait)

Prompt pour générer le code

Nous lui demandons d’aller plus loin :

Pouvez-vous produire le code adéquat, sans fautes et en suivant les instructions avec précision ?

Ce second prompt est nécessaire car dans un premier temps, il explique mais il ne génère pas tout de suite le code.

Après ce second prompt, il a bien généré un premier code, qui est incomplet. En effet, il manque l’appel à pygame.

Programme Python (extrait)
Programme Python (extrait)

Traiter les erreurs

Comme il manque l’appel à pygame, nous créons un nouveau Prompt :

Pygame est absent.

Il regénère le code avec l’appel à pygame, cette-fois ci.

Ensuite, il suffit de copier le code, avec le bouton en haut et à droite, puis de le coller dans un fichier texte et de le sauvegarder avec l’extension .py, comme simulation_Pierre-Papier-Ciseaux.py.

Enfin, ouvrez une invite de commandes où se trouve physiquement le fichier jsimulation_Pierre-Papier-Ciseaux.py et tapez :

simulation_Pierre-Papier-Ciseaux.py

Si vous préférez, vous pouvez aussi double-cliquez directement sur le fichier simulation_Pierre-Papier-Ciseaux.py :

  • Pierre est un disque gris.
  • Ciseaux est un polygone en rouge.
  • Papier est un carré blanc avec un bord marron.

C’est plutôt réussi pour l’instant même s’il manque les effets visuels demandés. En effet, le module Python pygame ne rivalise pas avec les environnements sophistiqués de développement comme Unity, par exemple.

Simulation V1 de Pierre Papier Ciseaux par ChatGPT
Simulation V1 de Pierre Papier Ciseaux par ChatGPT

Version améliorée de la simulation avec ChatGPT (V2)

Cette première version a plusieurs défauts.

Ces défauts sont corrigés grâce à ce prompt :

  • Il serait préférable que celui qui perd disparaisse dès qu’il touche l’autre.
  • Il serait préférable que les mouvements soient plus lisses et moins vibrants.
  • Il serait préférable que les objets rebondissent sur les bords.

À chaque fois, ChatGPT génère le code en expliquant ce qu’il fait. Par exemple :

Pour faire rebondir les objets sur les bords de l’écran, nous devons modifier leur logique de mouvement afin qu’ils changent de direction lorsqu’ils atteignent les limites de l’écran. Voici comment nous pouvons ajuster la classe GameObject pour implémenter ce comportement :

Ensuite, une fois que le nouveau code est généré, il suffit à nouveau de le copier-coller dans le fichier simulation_Pierre-Papier-Ciseaux.py, puis de relancer simulation_Pierre-Papier-Ciseaux.py : le jeu s’exécute.

  • Pierre est un disque gris.
  • Ciseaux est un polygone en rouge.
  • Papier est un carré blanc avec un bord marron.
Simulation V2 pierre papier ciseaux par ChatGPT avec rebond sur les bords
Simulation V2 de Pierre Papier Ciseaux par ChatGPT

Différences entre les demandes et le résultat

Vérifiez toujours le résultat, car il peut arriver que ChatGPT oublie ce qu’il avait déjà généré.

Si la simulation ne se comporte pas comme vous le souhaitez, il ne faut pas hésiter à le lui faire remarquer en lui demandant de corriger ce qui ne va pas.

Version opérationnelle de la simulation avec ChatGPT (V3)

La version précédente révèle un comportement rédhibitoire. En effet, 2 objets qui se suivent vont se suivre indéfiniment.

Le nouveau prompt va rompre ce comportement. Il va aussi ajouter une condition de fin de partie.

  • Il serait préférable que 2 objets qui se suivent ne restent pas dans le même axe plus de 2 secondes. Au bout de 2 secondes, ils changent de direction aléatoirement.
  • Il serait préférable que le jeu s’arrête lorsque tous les éléments qui restent sont du même type.

Faites attention que le code devient assez long, un bouton Continue Generating peut apparaître en bas et à droite de l’écran : il suffit de cliquer dessus.

La nouvelle version (V3) devient réellement opérationnelle :

Simulation V3 pierre papier ciseaux par ChatGPT avec déroutement des objets.
Simulation V3 de Pierre Papier Ciseaux par ChatGPT

Version finale de la simulation avec ChatGPT (V4)

Ce dernier prompt fonctionnel doit ajouter des fonctionnalités de l’affichage du temps.

  • Il serait préférable d’ajouter un compteur de temps.
  • Il serait préférable d’afficher un message de fin de partie.
  • Il serait préférable que les messages soient en français.

La version finale (V4) est très satisfaisante, même si elle n’est pas parfaite.

En effet, les fins de partie sont un peu longues car il ne reste plus que 2 ou 3 éléments en ligne.

Simulation de Pierre Papier Ciseaux par ChatGPT
Simulation de Pierre Papier Ciseaux par ChatGPT

Tous les fichiers à télécharger

Premièrement, vous pouvez télécharger le prompt utilisé en entier : prompt complet.

Gardez à l’esprit que le code que vous obtiendrez à l’aide du Prompt peut être radicalement différent de celui que nous avons obtenu.

Enfin, vous pouvez télécharger le code final généré par ChatGPT : version finale (code python).

Pour aller plus loin

L’article Améliorer un programme existant avec ChatGPT et DALL-E propose une version améliorée avec des graphismes plus représentatifs.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *