Chat GPT et la génération de code.

On parle de tout et de rien (vos jeux préférés, films, manifestations diverses, etc...)
Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Chat GPT et la génération de code.

Message par jmhoubre » 02 Jan 2023 19:50

Bonsoir,

suite à plusieurs vidéos proposés par YT, j'ai fait quelques essais avec Chat GPT. Voici mon dernier essai, je l'ai trouvé plutôt pas mal, et le voici :

[Moi] Pour Unity, fais moi un composant Health

[Chat GPT] Bien sûr ! Voici un exemple de composant Health pour Unity qui peut être ajouté à un GameObject :

Code : Tout sélectionner

using UnityEngine;

public class Health : MonoBehaviour
{
    public float maxHealth = 100f;
    public float currentHealth;
    public bool isDead = false;

    void Start()
    {
        currentHealth = maxHealth;
    }

    public void TakeDamage(float damage)
    {
        currentHealth -= damage;
        if (currentHealth <= 0 && !isDead)
        {
            Die();
        }
    }

    void Die()
    {
        isDead = true;
        Debug.Log(gameObject.name + " is dead.");
        // Ajoutez ici du code pour gérer la mort du GameObject, par exemple le désactiver ou le détruire.
    }
}
Ce composant a une propriété maxHealth qui représente la santé maximale du GameObject, une propriété currentHealth qui représente sa santé actuelle et une propriété booléenne isDead qui indique si le GameObject est mort ou non. Le composant possède également une méthode TakeDamage qui permet de retirer de la santé au GameObject et une méthode Die qui est appelée lorsque la santé du GameObject tombe à zéro ou en dessous. Vous pouvez ajouter du code dans la méthode Die pour gérer ce qui se passe lorsque le GameObject meurt, par exemple le désactiver ou le détruire.

Pour utiliser ce composant, ajoutez-le à un GameObject en sélectionnant le GameObject dans l'éditeur Unity et en cliquant sur "Add Component" dans le volet "Inspector". Vous devriez voir les propriétés du composant dans le volet "Inspector" et vous pourrez les configurer selon vos besoins. Vous pouvez également appeler la méthode TakeDamage depuis d'autres scripts pour infliger des dégâts au GameObject.

[Moi] Pourquoi initialises-tu currentHealth dans Start et pas dans Awake ?

[Chat GPT] La méthode Start est appelée une fois que tous les objets du jeu ont été initialisés et que leurs liens ont été établis. Elle est donc idéale pour initialiser des valeurs qui dépendent de l'état d'autres objets.

En revanche, la méthode Awake est appelée avant que tous les objets du jeu ne soient initialisés et que leurs liens ne soient établis. Elle est donc plus adaptée pour l'initialisation de données indépendantes des autres objets.

Dans le cas du composant Health, l'initialisation de currentHealth à la valeur de maxHealth n'a pas besoin d'être effectuée avant que les autres objets du jeu soient initialisés. Par conséquent, il est plus approprié de le faire dans la méthode Start plutôt que dans la méthode Awake.

Il est également possible de surcharger la méthode OnEnable pour initialiser des valeurs chaque fois que le composant est activé, par exemple après avoir été désactivé avec la méthode GameObject.SetActive(false). Cela peut être utile dans certains cas, mais ce n'est pas nécessaire dans l'exemple du composant Health donné.

[Moi] C'est ce que je me demandais si on construit un pool d'ennemis avec le composant Health. Dans ce cas il vaut mieux utiliser OnEnable.

[Chat GPT] Oui, vous avez raison. Si vous utilisez un système de pool d'ennemis qui réactive des GameObjects au lieu de les détruire et de les recréer, il est préférable d'initialiser les valeurs de currentHealth et isDead dans la méthode OnEnable plutôt que dans la méthode Start. Cela garantit que ces valeurs sont correctement initialisées chaque fois que l'ennemi est réactivé à partir du pool.

Voici comment le composant Health pourrait être modifié pour utiliser la méthode OnEnable :

Code : Tout sélectionner

using UnityEngine;

public class Health : MonoBehaviour
{
    public float maxHealth = 100f;
    public float currentHealth;
    public bool isDead = false;

    void OnEnable()
    {
        currentHealth = maxHealth;
        isDead = false;
    }

    public void TakeDamage(float damage)
    {
        currentHealth -= damage;
        if (currentHealth <= 0 && !isDead)
        {
            Die();
        }
    }

    void Die()
    {
        isDead = true;
        Debug.Log(gameObject.name + " is dead.");
        // Ajoutez ici du code pour gérer la mort du GameObject, par exemple le désactiver ou le détruire.
    }
}
En utilisant cette version du composant Health, les valeurs de currentHealth et isDead seront correctement initialisées chaque fois que l'ennemi est réactivé à partir du pool. Vous pouvez toujours utiliser la méthode TakeDamage pour infliger des dégâts à l'ennemi et déclencher la méthode Die si nécessaire.

--- fin du test ---

Alors bien sûr, il y a des limitations, assez bien décrites par CodeMonkey dans une de ses vidéos :
  • L'apprentissage de l'AI s'arrête en 2021 : donc rien sur les nouveautés 2022 (et 2023 :-D)
  • Pour Unity et le C#, beaucoup de choses viennent des tutos, dont la qualité est variable. Par exemple, tous les champs du script Health sont déclarés en public, ce qui n'est pas vraiment une bonne pratique.
Et Chat GPT peut servir à plein de choses : propose-moi une recette japonaise facile à faire, un modèle de lettre pour etc...

youtpout
Messages : 71
Inscription : 15 Nov 2020 15:54

Re: Chat GPT et la génération de code.

Message par youtpout » 02 Jan 2023 21:24

Hello,

je vois déjà un problème ton currenthealth peut être négatif, faudrait le passer à 0 dans le cas ou il est inférieur à 0...

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Chat GPT et la génération de code.

Message par jmhoubre » 02 Jan 2023 22:41

Quand currentHealth est < 0, Die est exécutée. Mais tu peux le mettre à zéro si tu veux, ou même à pi ou 666.

Les cadavres ne portent pas de costards...

youtpout
Messages : 71
Inscription : 15 Nov 2020 15:54

Re: Chat GPT et la génération de code.

Message par youtpout » 03 Jan 2023 10:01

c'est dans le cas où tu affiches les point de vie, afficher -15 en points de vie c'est pas top

Goubiza
Messages : 3
Inscription : 14 Mars 2023 16:25

Re: Chat GPT et la génération de code.

Message par Goubiza » 14 Mars 2023 17:45

Haha :-D

J'ai essayé le même prompt, j'obtiens pas tout à fait la même sortie (ChatGPT via interface de Botnation : https://www.chatbotgpt.fr/)


C'est vrai que ChatGPT peut aider pour dev des petits scripts... cependant attention aux éventuelles erreurs ^^

Il peut aussi servir pour transcrire un langage dans un autre... par exemple de Python à C# !
Pièces jointes
Capture d’écran 2023-03-14 à 15.23.42.png
Capture d’écran 2023-03-14 à 15.23.42.png (480.74 Kio) Consulté 3618 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Chat GPT et la génération de code.

Message par boubouk50 » 14 Mars 2023 18:15

On parle quand même de génération automatique par une simple question. C'est déjà énorme ce qui est proposé !
Bien sûr, cela ne remplace en rien la compétence de développement ni ne remplacera un développeur. Mais tout de même, c'est un pas énorme
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Goubiza
Messages : 3
Inscription : 14 Mars 2023 16:25

Re: Chat GPT et la génération de code.

Message par Goubiza » 15 Mars 2023 10:38

Oui c'est sûr ça peut aider ! GPT-4 est sorti hier soir d'ailleurs, apparemment il a amélioré ses réponses aux questions liées au codage entre autres. J'ai pas encore essayé

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Chat GPT et la génération de code.

Message par boubouk50 » 15 Mars 2023 13:07

j'ai découvert https://www.phind.com/ hier et l'ai testé.
Franchement, c'est bien pour orienter la recherche ou avoir une réponse rapide à une question technique.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Discussion générale »