bouton qui s'active quant on clic sur un autre bouton

Questions à propos du GUI, y compris la partie script.
Répondre
Avatar de l’utilisateur
poupoule_h5n1
Messages : 48
Inscription : 28 Nov 2022 20:24

bouton qui s'active quant on clic sur un autre bouton

Message par poupoule_h5n1 » 23 Fév 2023 12:33

Bien le bonjour, je viens vers vous car les boutons de mon interface ne fonctionnent pas comment ils le devraient mais je ne parvient pas à comprendre d’où vient le problème.

Je crées un jeu de cuisine basé sur les items de minecraft.
Image
Il y a un bouton sur la table de craft, après avoir sélectionné un item, on clic dessus pour posé l'item. Puis a nouveau, pour l'envoyer vers le client. Pour une meilleur visualisation j'ai mis le bouton en blanc. :
Image
Si on appuie sur une petit bouton situer en dessous, se déploie alors ce que j’ appel "la grande table" qui permet de faire des recettes plus complexe dans le modelè du craft de minecraft. Sur la grande table, il y a 9 petits bouton qui permettent de crafter. Ils ne sont clicable que si la grande table est déployée.
Image
(je précise que les boutons de la grande table sont enfant de celle ci, qui est elle même enfant de la table de craft)
tout fonctionnait bien puis, de façon inexpliquée, le bouton de craft a commencer a s’active quant je cliquais sur les petits boutons des emplacement de la grande table.
Ais-je activé une fonctionnalité sans le faire exprès ? est-ce un bug ?
Si vous avez besoin d'information complémentaire, je reste a l'écoute.

J’espère sincèrement avoir des retour, même si c'est pour me dire que mon projet est corrompu par un bug et que je dois recommencé. Se ne serais pas joyeux mais se serais au moins un explication . rester ainsi dans l’incompréhension est vraiment désagréable. :gene:

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

Re: bouton qui s'active quant on clic sur un autre bouton

Message par jmhoubre » 23 Fév 2023 15:21

Bonjour,

peux-tu préciser comment sont paramétrés les "petits boutons" et le "bouton de craft" ? Ils s'activent par code (si oui le publier) ou as-tu ajouté un event dans l'inspecteur (si oui, quelle méthode appellent-ils, la publier) ?

Avatar de l’utilisateur
poupoule_h5n1
Messages : 48
Inscription : 28 Nov 2022 20:24

Re: bouton qui s'active quant on clic sur un autre bouton

Message par poupoule_h5n1 » 23 Fév 2023 15:46

voici le code de la table de craft :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;

public class TableDeCraft : MonoBehaviour
{
    public Image ImageSurLaTable;
    public Item ItemSurLaTable;
    public Case CaseSurLaTable;
    public Item caca;
    public Item PixelInvisible;
    public bool pret = false;
    public bool wait = true;
    bool raté = false;
    public Client client; 

    private Case scriptCase;
    private Button scriptBouton;
    public string codecraft = "";

    public GameObject[] bouton;
    public Animator animator;
    public Animator piston;
    public BoutonDeTrappe poubelle;

    public grandeTable grandetable;

    public static TableDeCraft Instance;

    private void Awake()
    {
        if (Instance != null)
        {
            Debug.LogWarning("Il y a plus d'une instance de TableDeCraft dans la scène");
            return;
        }
        Instance = this;
    }

    void Start()
    {
        wait = true;
        ItemSurLaTable = PixelInvisible;
        ImageSurLaTable.sprite = ItemSurLaTable.image;
        for (int i = 0; i < bouton.Length; i++)
        {
            scriptCase = bouton[i].GetComponent<Case>();
            int id = scriptCase.item.id;
            for (int i2 = 0; i2 < ItemDataBase.Instance.débloqués.Length; i2++)
            {
                if (ItemDataBase.Instance.débloqués[i2].id == id)
                {
                    scriptBouton = bouton[i].GetComponent<Button>();
                    scriptBouton.interactable = true;
                }
            }
        }
    }

    public void craft()
    {
        Debug.Log("clic");
        if (pret)
        {
            if (grandetable.redressée)
            {
                grandetable.grandCraft();
                Debug.Log("entre grand craft");
            }
            else             
            {
                client = GameObject.FindGameObjectWithTag("Client").GetComponent<Client>();
                client.Reception(ItemSurLaTable.id);
                //Debug.Log(ItemSurLaTable.nom + " est envoyer");          
                if (raté)
                {
                    animator.SetTrigger("envoyCaca");
                    raté = false;
                }
                else
                {
                    Animator tempoAnimator = CaseSurLaTable.GetComponent<Animator>();
                    tempoAnimator.SetTrigger("envoy");
                }
                piston.SetTrigger("pousser");
                ItemSurLaTable = PixelInvisible;
                ImageSurLaTable.sprite = ItemSurLaTable.image;
                pret = false;
            }
        }
        else if (wait)
        {

        }
        else
        {
            for (int i = 0; i < bouton.Length; i++)
            {
                scriptCase = bouton[i].GetComponent<Case>();
                if (scriptCase.actif)
                {
                    string tempo = scriptCase.item.id.ToString();
                    if (scriptCase.cadre)
                    {
                        scriptCase.item = PixelInvisible;
                        scriptCase.SurLEmplacement.sprite = PixelInvisible.image;
                    }
                    codecraft = codecraft + tempo;
                    codecraft = codecraft + ",";
                }                
            }
            codecraft = codecraft + "0";
            //Debug.Log(codecraft);
            if (codecraft == "1,0" || codecraft == "2,0" || codecraft == "3,0" || codecraft == "4,0" || 
                codecraft == "5,0" || codecraft == "7,0" || codecraft == "9,0" || codecraft == "11,0" || 
                codecraft == "12,0" || codecraft == "14,0" || codecraft == "17,0" || codecraft == "18,0"  ||
                codecraft == "20,0" || codecraft == "23,0" || codecraft == "24,0" || codecraft == "26,0" || 
                codecraft == "28,0" || codecraft == "30,0" || codecraft == "32,0" || codecraft == "36,0" || 
                codecraft == "38,0" || codecraft == "40,0" || codecraft == "41,0" || codecraft == "44,0" || 
                codecraft == "46,0" || codecraft == "49,0" || codecraft == "51,0")
            {
                //Debug.Log("dans la boucle recette connue");
                string[] StringID = codecraft.Split(',');
                Debug.Log(codecraft);
                int id = int.Parse(StringID[0]);
                //Debug.Log("l'id est" + id);
                LeBonItem(id);
            }
            else if (codecraft == "33,0")
            {
                int chance = Random.Range(1, 5);
                int id = 0;
                if(chance == 3) 
                { 
                    id = 35;
                    Case tempo = scriptCase;
                    for (int i = 0; i < bouton.Length; i++)
                    {
                        tempo = bouton[i].GetComponent<Case>();
                        if (tempo.item.id == 33)
                        {
                            tempo.Selectionner();
                        }
                        else if (tempo.item.id == 35)
                        {
                            tempo.Selectionner();
                        }
                    }
                }
                else { id = 33; } 
                LeBonItem(id);                
            }
            else if (codecraft == "0") 
            {
                if (grandetable.redressée)
                {
                    grandetable.grandCraft();
                    Debug.Log("entre grand craft");
                }
            }
            else
            {
                //Debug.Log(codecraft);
                string[] itemsSelectioné = codecraft.Split(',');
                for (int i = 0; i < itemsSelectioné.Length; i++)
                {
                    
                    int id = int.Parse(itemsSelectioné[i]);
                    if(id == 0) { }
                    else 
                    {
                        Case tempoCase = scriptCase;
                        for (int i2 = 0; i2 < bouton.Length; i2++)
                        {
                            Case temposcript = bouton[i2].GetComponent<Case>();
                            if (temposcript.item.id == id)
                            {
                                tempoCase = temposcript;
                            }
                        }    
                        Animator tempAnimator = tempoCase.GetComponent<Animator>();
                        tempAnimator.SetTrigger("craft");                       
                        tempoCase.Selectionner();
                    }                    
                }                
                StartCoroutine(EventCaca());
                wait = true;
            }
            codecraft = "";
        }
    }
    void LeBonItem(int id)
    {
        for (int i = 0; i < bouton.Length; i++)
        {
            Case temposcript = bouton[i].GetComponent<Case>();
            if (temposcript.item.id == id)
            {
                CaseSurLaTable = temposcript;
            }
        }
        Animator tempAnimator = CaseSurLaTable.GetComponent<Animator>();
        tempAnimator.SetTrigger("craft");
        StartCoroutine(Event());
        wait = true;
    }

    IEnumerator Event()
    {
        yield return new WaitForSeconds(0.5f);
        ItemSurLaTable = CaseSurLaTable.item;
        ImageSurLaTable.sprite = ItemSurLaTable.image;
        CaseSurLaTable.Selectionner();
        wait = false;
        pret = true;
    }

    public IEnumerator EventCaca()
    {
        yield return new WaitForSeconds(0.5f);
        ItemSurLaTable = caca;
        ImageSurLaTable.sprite = ItemSurLaTable.image;
        raté = true;
        wait = false;
        pret = true;
    }    

    public void remplace(int numero)
    {
        CaseSurLaTable = bouton[numero].GetComponent<Case>();
    }
}
voici le code de la grande table :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class grandeTable : MonoBehaviour
{
    public CaseGrandeTable[] caseGrandeTables;
    public Item[] itemCuisiné;

    public Item pixelInvisible;
    public bool redressée = false;
    public Animator animator;
    bool wait = false;
    string codecraft;


    void Start()
    {
        animator.GetComponent<Animator>();
    }
 
    public void boutonDeCraft()
    {
        if(!redressée)
        {
            StartCoroutine(seRedresser());
        }
        else
        {
            StartCoroutine(seBaisser());
        }
    }

    public void grandCraft()
    {
        if (wait) { }
        else
        {
            wait = true;
            for (int i = 0; i < caseGrandeTables.Length; i++)
            {   
                string tempo = caseGrandeTables[i].item.id.ToString();      
                codecraft = codecraft + tempo;
                codecraft = codecraft + ",";                
            }
            codecraft = codecraft + "0";
            string[] recette = codecraft.Split(',');
            int nombrede0 = 0;
            int nombrede11 = 0;//oeuf
            int nombrede13 = 0;//lapincuit
            int nombrede17 = 0;//pépiteDor
            int nombrede23 = 0;//bol
            int nombrede26 = 0;//blé
            int nombrede32 = 0;//betrave
            int nombrede34 = 0;//patatecuite
            int nombrede36 = 0;//carrote
            int nombrede38 = 0;//pomme
            int nombrede40 = 0;//champibrun
            int nombrede41 = 0;//champirouge
            int nombrede44 = 0;//cacao
            int nombrede46 = 0;//canneasucre
            int nombrede47 = 0;//sucre
            int nombrede49 = 0;//pastéque
            int nombrede51 = 0;//citrouille
            Debug.Log("le codecraft de la grande table est " + codecraft);
            if (codecraft == "16,16,16,47,11,47,26,26,26,0;")
            {
                TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[7];
            }
            else
            {
                for (int i = 0; i < recette.Length; i++)
                {
                    int id = int.Parse(recette[i]);
                    if (id == 0) { nombrede0++; }
                    if (id == 11) { nombrede11++; }
                    if (id == 13) { nombrede13++; }
                    if (id == 17) { nombrede17++; }
                    if (id == 23) { nombrede23++; }
                    if (id == 26) { nombrede26++; }
                    if (id == 32) { nombrede32++; }
                    if (id == 34) { nombrede34++; }
                    if (id == 36) { nombrede36++; }
                    if (id == 38) { nombrede38++; }
                    if (id == 40) { nombrede40++; }
                    if (id == 41) { nombrede41++; }
                    if (id == 44) { nombrede44++; }
                    if (id == 46) { nombrede46++; }
                    if (id == 47) { nombrede47++; }
                    if (id == 49) { nombrede49++; }
                    if (id == 51) { nombrede51++; }
                }
                if( nombrede0 == 9 && nombrede46 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[6];
                    Debug.Log("donne un sucre");
                }
                else if( nombrede0 == 9 && nombrede49 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[8];
                    Debug.Log("donne une tranche de pastéque");
                }
                else if( nombrede0 == 7 && nombrede26 == 2 && nombrede44 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[5];
                    Debug.Log("donne  un cokkie");
                }
                else if( nombrede0 == 7 && nombrede26 == 3)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[0];
                    Debug.Log("donne un pain");
                }
                else if( nombrede0 == 3 && nombrede32 == 6 && nombrede23 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[10];
                    Debug.Log("donne une soupe de betrave");
                }
                else if( nombrede0 == 7 && nombrede40 == 1 && nombrede41 == 1 && nombrede23 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[3];
                    Debug.Log("donne une soupe de champi");
                }
                else if( nombrede0 == 8 && nombrede17 == 1 && nombrede36 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[1];
                    Debug.Log("donne une carrote dorée");
                }

                else if( nombrede0 == 7 && nombrede47 == 1 && nombrede11 == 1 && nombrede51 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[9];
                    Debug.Log("donne une tarte a la citrouille");
                }
                else if( nombrede0 == 4 && nombrede47 == 1 && nombrede36 == 1 && nombrede13 
                    == 1 && nombrede34 == 1 && nombrede40 == 1 && nombrede23 == 1 )
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[4];
                    Debug.Log("donne un ragout de lapin");
                }
                else if (nombrede0 == 4 && nombrede47 == 1 && nombrede36 == 1 && nombrede13
                    == 1 && nombrede34 == 1 && nombrede41 == 1 && nombrede23 == 1)
                {
                    TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[4];
                    Debug.Log("donne un ragout de lapin");
                }
                else
                {
                    Debug.Log("aucun codecraft ne correspond");
                }
            }
        }
        codecraft = "";
    }

    IEnumerator Craft()
    {
        animator.SetTrigger("craft");
        yield return new WaitForSeconds(0.5f);
        TableDeCraft.Instance.ImageSurLaTable.sprite = TableDeCraft.Instance.ItemSurLaTable.image;
        for (int i = 0; i < caseGrandeTables.Length; i++)
        {
            caseGrandeTables[i].item = pixelInvisible;
            caseGrandeTables[i].imageDubouton.sprite = pixelInvisible.image;
        }
        if (TableDeCraft.Instance.ItemSurLaTable != pixelInvisible)
        {
            TableDeCraft.Instance.pret = true;
        }
        yield return new WaitForSeconds(0.5f);
        wait = false;
    }

    IEnumerator seRedresser()
    {
        TableDeCraft.Instance.wait = true;
        animator.SetBool("redressée", true);
        yield return new WaitForSeconds(1);
        for (int i = 0; i < caseGrandeTables.Length; i++)
        {
            caseGrandeTables[i].bouton.interactable = true;
            caseGrandeTables[i].imageDubouton.sprite = caseGrandeTables[i].item.image;
        }
        redressée = true;
        TableDeCraft.Instance.wait = false;
    }

    IEnumerator seBaisser()
    {
        TableDeCraft.Instance.wait = true;
        animator.SetBool("redressée", false);
        for (int i = 0; i < caseGrandeTables.Length; i++)
        {
            caseGrandeTables[i].bouton.interactable = false;
            caseGrandeTables[i].imageDubouton.sprite = pixelInvisible.image;
        }
        yield return new WaitForSeconds(1);
        if(TableDeCraft.Instance.ItemSurLaTable != pixelInvisible)
        {
            TableDeCraft.Instance.pret = true;
        }
        redressée = false;
        TableDeCraft.Instance.wait = false;
    }
    
}
voici le code d'un emplacement dans la grande table :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CaseGrandeTable : MonoBehaviour
{
    public Item item;
    public string nom;
    public Button bouton;
    public Animator anim;
    public Item pixelInvisible;
    public Image imageDubouton;
    public Image imageDansLaCase;
    public Image imageSurLaTable;
    bool wait = false;

    void Start()
    {
        anim.GetComponent<Animator>();
    }

    public void emplacement() { StartCoroutine(IEemplacement()); }
    IEnumerator IEemplacement()
    {
        Debug.Log("clic case grande table");
        if (!wait)
        { 
            wait = true;
            if(TableDeCraft.Instance.ItemSurLaTable == pixelInvisible && item == pixelInvisible)
            {
                wait = false;
            }
            else
            {                
                imageDansLaCase.sprite = imageDubouton.sprite;
                imageSurLaTable.sprite = TableDeCraft.Instance.ImageSurLaTable.sprite;
                anim.SetTrigger("échange");
                Item itemtempo = TableDeCraft.Instance.ItemSurLaTable;
                TableDeCraft.Instance.ItemSurLaTable = item;
                item = itemtempo;
                imageDubouton.sprite = pixelInvisible.image;
                TableDeCraft.Instance.ImageSurLaTable.sprite = pixelInvisible.image;
                yield return new WaitForSeconds(0.5f);
                imageDansLaCase.sprite = pixelInvisible.image;
                imageSurLaTable.sprite = pixelInvisible.image;
                if (!TableDeCraft.Instance.pret) { TableDeCraft.Instance.pret = true; }
                else { TableDeCraft.Instance.pret = false; }
                imageDubouton.sprite = item.image;
                TableDeCraft.Instance.ImageSurLaTable.sprite = TableDeCraft.Instance.ItemSurLaTable.image;
                wait = false;
            }            
        }
    }
}
je n'ai pas ajouter d'event
voici les parametres du bouton de la table de craft :
Image
et ceux des emplacement (petit boutons)
Image

les bouton d'emplacement sont activé dans le code de la grande table quant elle se redresse et sont désactivé quant elle se baisse.

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

Re: bouton qui s'active quant on clic sur un autre bouton

Message par jmhoubre » 24 Fév 2023 00:11

Bonsoir,

j'ai passé en revue tes scripts, je n'ai rien remarqué d'anormal, à l'exception des coroutines. Demain, je vais essayer de faire tourner ton code pour y voir plus clair.

Que dis la console ? Tu as bien "clic case grande table" quand tu cliques sur un petit bouton ?

Tu utilises Visual Studio ? Si oui, tu lis les messages qu'il t'affiche ? Tu les corriges ?

Je n'ai pas réussi à déterminer quelle convention de nommage tu utilises : les fonctions, en particulier, sont parfois en CamelCase, parfois en PascalCase, C'est assez pénible de lire ton code.

J'ai également remarqué que tu mets parfois des accents dans tes identifiants, ce qui est généralement déconseillé.

Tu devrais penser à mettre des commentaires, ils t'aideront à te rappeler rapidement du but d'une fonction quand tu reviens dessus après plusieurs jours, et faciliteront la compréhension de ton code par un extérieur.

Dans tes classes, tu met (à mon avis) trop de choses en public. Tu dois prendre l'habitude inverse : tout mettre en privé, et ne mettre en public que lorsque un accès depuis une autre classe est nécessaire, en utilisant si possible une propriété. Par exemple quel est l'intérêt de déclarer public l'Animator anim, puisque tu lui donne une valeur dans ton code ?

Les lignes vides et les espaces sont gratuits ! Je sais, cela parait fou à notre époque... Mais ceci est pénible à lire :

Code : Tout sélectionner

	public void emplacement() { StartCoroutine(IEemplacement()); }
	IEnumerator IEemplacement()
	{
alors que ceci me semble plus sympathique :

Code : Tout sélectionner

	public void emplacement()
	{
		StartCoroutine(IEemplacement());
	}
	
	IEnumerator IEemplacement()
	{
Toujours sur le nommage, il est souvent judicieux de donner à une méthode (fonction, procédure, ...) un verbe comme nom. La méthode emplacement () n'évoque rien. Je ne peux même pas te proposer une alternative, je n'ai pas compris ta logique de craft.

Si tu comprends l'anglais, je te conseille la vidéo "How to Craft Items with Scriptable Objects! (Unity Tutorial)" de Code Monkey.

Avatar de l’utilisateur
poupoule_h5n1
Messages : 48
Inscription : 28 Nov 2022 20:24

Re: bouton qui s'active quant on clic sur un autre bouton

Message par poupoule_h5n1 » 24 Fév 2023 01:10

ok merci pour tes retours, je vais prendre un peu de temps pour mettre tout ça au propre.
peut être trouverais-je d’où viens le problème en le faisant.

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

Re: bouton qui s'active quant on clic sur un autre bouton

Message par jmhoubre » 24 Fév 2023 17:47

Bonjour,

comme promis, j'ai essayé de faire tourner ton code. Malheureusement, il me manque Item.cs, Client.cs, Case.cs, ItemDataBase.cs, la description de itemtDansLaCase et ItemSurLatable, bref, chaque fois que j'avance d'un pas, je découvre de nouveaux mystères. Je ne suis donc pas en mesure de faire tourner ton code.

Voici quelques remarques ou questions sur ton code :
  • Script CaseGrandTable
    • La coroutine IEemplacement contient un if (TableDeCraft.Instance.ItemSurLaTable == pixelInvisible etc.... La 1ère branche du if ne contient de yield return quelquechose. La coroutine ne rend donc pas la main à Unity et continue sa vie. wait est donc à false. La coroutine sort des deux if, et ne fait rien. C'est ce que tu voulais ?
    • Cette coroutine mériterait d'être allégée, en créant une ou deux fonctions, comme AfficherItem() et CacherItem()
    • Les lignes :

      Code : Tout sélectionner

      if (!TableDeCraft.Instance.pret) { TableDeCraft.Instance.pret = true; }
      				else { TableDeCraft.Instance.pret = false; }
      
      sont probablement plus lisibles comme ceci :

      Code : Tout sélectionner

      TableDeCraft.Instance.pret = !TableDeCraft.Instance.pret;
      
  • Script GrandeTable
    • La méthode grandCraft() contient une série de déclaration de int nombredeXX = 0 : comment feras-tu pour ajouter des ingrédients ? Je te conseille vivement d'utiliser des ScriptableObjects pour décrire tes items.
    • tu testes si codecraft vaut "16,16,16,47,11,47,26,26,26,0;" Or à aucun moment tu n'ajoutes de point-virgule à codecraft. Tu ajoutes bien "0" à la fin, mais pas de ";".
    • Quand tu testes si une recette est constituée, j'ai remarqué que le nombre d'ingrédients total est de 10 alors que ta table ne contient que 9 emplacements. J'ai du louper quelques chose...

      Code : Tout sélectionner

      if (nombrede0 == 9 && nombrede46 == 1) // 9 + 1. D'où vient le 10ème ingrédient ?
      {
      	TableDeCraft.Instance.ItemSurLaTable = itemCuisiné[6];
      	Debug.Log ("donne un sucre");
      }
      
  • Script TableDeCraft
    • La méthode Craft () fait 130 lignes !!! Comment veux-tu vérifier son fonctionnement ? Il faut impérativement la refactoriser et utiliser des méthodes. D'autant qu'avec la forêt de if, else if et else imbriqués, c'est assez obscur.
    • A quoi correspond le booléen pret ? Ce ne serait pas plus lisible en le renommant TableDeCraftPrete ?
Tu devrais vraiment te lancer dans des projets plus simples. Pourquoi ne pas reprendre un classique comme Space Invaders ou Snake ? Ce sont des jeux 2D dans lesquels tes talents de graphiste 2D pourraient s'exprimer avec une partie code plus accessible.

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

Re: bouton qui s'active quant on clic sur un autre bouton

Message par boubouk50 » 24 Fév 2023 18:42

jmhoubre a écrit :
24 Fév 2023 00:11
J'ai également remarqué que tu mets parfois des accents dans tes identifiants, ce qui est généralement déconseillé.
Je dirai même que ça devrait être interdit. (Mais il n'y a pas de loi contre cela et il n'y en aura pas...)
Des fois c'est supporté, des fois non. Pour du dev Mac, c'est rédhibitoire.
"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

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

Re: bouton qui s'active quant on clic sur un autre bouton

Message par jmhoubre » 24 Fév 2023 21:15

Pour une fois que j'essaie d'écrire quelque chose de soft... :-D

Avatar de l’utilisateur
poupoule_h5n1
Messages : 48
Inscription : 28 Nov 2022 20:24

Re: bouton qui s'active quant on clic sur un autre bouton

Message par poupoule_h5n1 » 25 Fév 2023 01:29

^^' j'ai finit par trouver qu'où venais mon problème.
sur la table de craft j'ai voulu faire une animation qui échange l'item avec les emplacement de la grande table. pour ce faire j'avais mis une image par dessus chaque petits boutons de la grande table et j'avais ranger ces images comme enfant de la table de craft. Donc quant je cliquais sur les petit boutons, je cliquais en fait sur cette image et donc sur la table de craft qui était son parent.
Le pire c'est que cette petit image , en dehors des animation, ne contiens qu'un pixel vide. je l'avais donc complétement oublié.

au moins cet évènement m'a forcé a faire plein de modification dans mes scriptes, ils sont plus lisibles et (un peu) plus propre. il y a encore du boulot pour qu'il soit correspondant parfaitement a vos critères mais on s'y approche ^^

Vu que le problème est réglé, est-ce que ça vous intéresse de voir les scriptes modifier ?

Avatar de l’utilisateur
poupoule_h5n1
Messages : 48
Inscription : 28 Nov 2022 20:24

Re: bouton qui s'active quant on clic sur un autre bouton

Message par poupoule_h5n1 » 25 Fév 2023 01:38

jmhoubre a écrit :
24 Fév 2023 17:47
Tu devrais vraiment te lancer dans des projets plus simples. Pourquoi ne pas reprendre un classique comme Space Invaders ou Snake ? Ce sont des jeux 2D dans lesquels tes talents de graphiste 2D pourraient s'exprimer avec une partie code plus accessible.
mais ... aie ^^
c'est un jeu que je considère comme simple.
bon ok ... j'ai beaucoup d'amélioration a faire mais il est presque finit.
c'est un peu frustrant comme remarque
mais bon je consens que j'ai des lacunes, je vais me reconcentrer sur un cour de c#

Répondre

Revenir vers « L'interface GUI »