Exemplo n.º 1
0
        /*
         * Constructeur
         */
        public Valeur_AfficheLaValeur_ENTEntier(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs)
        {
            // Déclarations
            // ------------

            String nomDeLAttribut;



            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "Valeur":
                    __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;
                }
            }


            // Liste les séquences du bloc
            // ---------------------------
            __séquences.Add((Séquence)Séquence_1);
        }
Exemplo n.º 2
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Test la condition
        //   - Celle-ci est fausse, on passe à la dernière séquence
        //   - Celle-ci est vrai, on passe au premier bloc interne
        public String  Séquence_1()
        {
            String code;



            if (__blocsInternes != null)
            {
                code = "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";
                if (__conditionDEntré.codeDInitialisationPourLeSéquenceur != "")
                {
                    code += "    " + __conditionDEntré.codeDInitialisationPourLeSéquenceur + "\n";
                }
                code += "    if " + __conditionDEntré.codePourLeSéquenceur + " then\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                        "    else\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(__blocsInternes.premierBloc.UID + __blocsInternes.nombreDeSéquence) + "\n" +
                        "    end\n" +
                        "  end";
                return(code);
            }
            else
            {
                return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID, UID + 2));
            }
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Arrête le timer1
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    timer.period[1]=0\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                   "  end");
        }
Exemplo n.º 4
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Allume les LEDs
        // - Passe au bloc suivant
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    " + __LED.code(__led, __couleur) + "\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                   "  end");
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Initialise le nombre de boucle, passe au bloc suivant
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    __boucle[" + (__UIDDeBoucle - 1) + "]=" + __nombreDeBoucle + "\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                   "  end");
        }
Exemplo n.º 6
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Initialise le chrono à 0
        // - Passe au bloc suivant
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    __chrono[" + UIDDuSéquenceur + "]=0\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                   "  end");
        }
Exemplo n.º 7
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Allume les moteurs
        // - Passe au bloc suivant
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    " + __MOTEUR.code(__sens, __vitesseAGauche, __vitesseADroite) + "\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                   "  end");
        }
Exemplo n.º 8
0
        /// <summary>
        /// Thread séparé pour la compilation
        /// </summary>
        private void    ThreadDeCompilation(object _sender, EventArgs _e)
        {
            temporisationDeCompilation.Stop();

            // Affiche l'aide si aucun fichier .b4t n'est envoyé
            if (Compilateur.nomDuFichierB4T == "")
            {
                Compilateur.AfficheLAide(this.TEXT_Messages);
                return;
            }

            // Affiche le texte d'entête
            Compilateur.AfficheLEntête(this.TEXT_Messages);

            // Affiche le nom du fichier
            AjouteUnMessage(String.Format(Messages.Message((int)Messages.TYPE.FICHIER), Compilateur.nomDuFichierB4T) + "\n");


            // Lance la compilation.
            // Si la compilation s'est bien déroulée, le programme se ferme automatiquement
            if (Compilateur.Compile(this))
            {
                // Message : Transfert terminé
                AjouteUnMessage("\n" + Messages.Message((int)Messages.TYPE.COMPILATION_ET_TRANSFERT_TERMINÉ));
                if (Compilateur.fermetureDeLaFenêtreALaFin)
                {
                                #if (DEBUG)
                    Application.Exit();
                                #else
                    FermeLaFenêtreAprès2Secondes();
                                #endif
                }
            }
        }
Exemplo n.º 9
0
        // Séquence 2
        // - Incrémente le chrono
        // - Test la fin du chrono
        //     - Si le chrono est écoulé, éteins les lumières et passe au bloc suivant
        public String  Séquence_2()
        {
            int correctionDeCalibration = 0;

            String code = "";



            if (__vitesse == (int)__MOTEUR.VITESSE.LENTE)
            {
                correctionDeCalibration = 7;
            }

            code += "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID + 1) + " then\n";

            switch (__sens)
            {
            case (int)__MOTEUR.SENS.EN_AVANT:
                code += "    if __odo.x>" + (__distance * (__MOTEUR.calibration - correctionDeCalibration)) + " then\n";
                break;

            case (int)__MOTEUR.SENS.EN_ARRIERE:
                code += "    if __odo.x<-" + (__distance * (__MOTEUR.calibration - correctionDeCalibration)) + " then\n";
                break;
            }

            code += "      callsub __ArreteLesMoteurs\n" +
                    "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                    "    end\n" +
                    "  end";

            return(code);
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Test la condition
        //     - Si celle-ci est vrai, passe au premier bloc interne
        //     - Si celle-ci est fausse, passe au bloc suivant
        public String  Séquence_1()
        {
            String code = "";


            if (__blocsInternes != null)
            {
                code += "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";
                if (__conditionDeBoucle.codeDInitialisationPourLeSéquenceur != "")
                {
                    code += "    " + __conditionDeBoucle.codeDInitialisationPourLeSéquenceur + "\n;";
                }
                code += "    if " + __conditionDeBoucle.codePourLeSéquenceur + " then\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(__blocsInternes.premierBloc.UID) + "\n" +
                        "    else\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                        "    end\n" +
                        "  end";
            }
            else
            {
                code += "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";
                if (__conditionDeBoucle.codeDInitialisationPourLeSéquenceur != "")
                {
                    code += "    " + __conditionDeBoucle.codeDInitialisationPourLeSéquenceur + "\n;";
                }
                code += "    if " + __conditionDeBoucle.codePourLeSéquenceur + " then\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                        "    else\n" +
                        "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                        "    end\n" +
                        "  end";
            }
            return(code);
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Test la condition
        //   - Celle-ci est fausse, on passe à la dernière séquence
        //   - Celle-ci est vrai, on passe au premier bloc interne
        public String  Séquence_1()
        {
            String code;

            code = "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";
            if (__conditionDEntré.codeDInitialisationPourLeSéquenceur != "")
            {
                code += "    " + __conditionDEntré.codeDInitialisationPourLeSéquenceur + "\n";
            }
            code += "    if " + __conditionDEntré.codePourLeSéquenceur + " then\n";
            if (__blocsInternes == null)
            {
                code += "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDeLaDernièreSéquence) + "\n";
            }
            else
            {
                code += "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(__blocsInternes.premierBloc.UID) + "\n";
            }
            code += "    else\n";
            if (__blocsInternesSupplémentaires == null)
            {
                code += "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDeLaDernièreSéquence) + "\n";
            }
            else
            {
                code += "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(__blocsInternesSupplémentaires.premierBloc.UID) + "\n";
            }
            code += "    end\n" +
                    "  end";
            return(code);
        }
Exemplo n.º 12
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Modifie la variable __chronomètre
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    __chronomètre=" + chronomètre * 1000 + "\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                   "  end");
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Initialise le chrono à 0
        // - Lance l'enregistrement du fichier son à partir du microphone
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    __chrono[" + UIDDuSéquenceur + "]=0\n" +
                   "    call sound.record(" + (int)__SONS.SON.DEPUIS_LE_MICROPHONE + ")\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                   "  end");
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Initialise le chrono à 0
        // - Joue la fréquence demandée
        public String  Séquence_1()
        {
            return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n" +
                   "    __chrono[" + UIDDuSéquenceur + "]=0\n" +
                   "    call sound.freq(" + __fréquence + ", " + (int)(__durée * 60) + ")\n" +
                   "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                   "  end");
        }
 // Séquence 2
 // - Test la fin de la leccture du son
 //     - Si la lecture du son est terminée, passe au bloc suivant
 public String  Séquence_2()
 {
     return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID + 1) + " then\n" +
            "    if __lectureDUnSon==0 then\n" +
            "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
            "    end\n" +
            "  end");
 }
Exemplo n.º 16
0
 // Séquence 2
 // - Incrémente le chrono
 // - Test la fin du chrono
 //     - Si le chrono est écoulé, passe au bloc suivant
 public String  Séquence_2()
 {
     return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID + 1) + " then\n" +
            "    __chrono[" + UIDDuSéquenceur + "]++\n" +
            "    if __chrono[" + UIDDuSéquenceur + "]>=" + (int)(__durée * 100) + " then\n" +
            "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
            "    end\n" +
            "  end");
 }
        /*
         * Constructeur
         */
        public Variable_IncrémenterUneVariable(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs)
        {
            // Déclarations
            // ------------

            String nomDeLAttribut;



            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "VAR":
                    __nom = XMLDUnNoeudFils.FirstChild.InnerText;
                    break;

                case "DELTA":
                    switch (XMLDUnNoeudFils.ChildNodes.Count)
                    {
                    case 1:
                        // Le Noeud fils contient seulement une balise <shadow>
                        // C'est la balise <shadow> qui est sélectionnée avec XMLDUnNoeudFils.FirstChild
                        __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                        break;

                    case 2:
                        // Le Noeud fils contient une balise <shadow> et une balise <block>
                        // C'est la balise <block> qui est sélectionnée avec XMLDUnNoeudFils.LastChild
                        __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.LastChild, _blocPrécédent, _groupeDeBlocs);
                        break;
                    }
                    break;
                }
            }

            __Variable.AjouteUneVariable(__nom);


            // Liste les séquences du bloc
            // ---------------------------
            __séquences.Add((Séquence)Séquence_1);
        }
Exemplo n.º 18
0
        /*
         * Constructeur
         */
        public GroupeDInstructions_Si_ENTCondition_Alors_Sinon(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs, null, null, null)
        {
            // Déclarations
            // ------------

            String nomDeLAttribut;

            XmlNode XMLInterne;


            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc.ChildNodes)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "Condition":
                    __conditionDEntré = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;
                }
            }


            // Blocs internes au groupe
            // ------------------------

            XMLInterne = _XMLDuBloc.SelectSingleNode("./statement[@name=\"BlocsInternes\"]");
            if (XMLInterne != null)
            {
                __blocsInternes = new __BlocsInternes(UID + 1, XMLInterne.FirstChild, null, this);
            }

            XMLInterne = _XMLDuBloc.SelectSingleNode("./statement[@name=\"BlocsInternes_Sinon\"]");
            if (XMLInterne != null)
            {
                if (__blocsInternes != null)
                {
                    __blocsInternesSupplémentaires = new __BlocsInternes(UID + 1 + __blocsInternes.nombreDeSéquence, XMLInterne.FirstChild, null, this);
                }
                else
                {
                    __blocsInternesSupplémentaires = new __BlocsInternes(UID + 1, XMLInterne.FirstChild, null, this);
                }
            }
        }
Exemplo n.º 19
0
        /*
         * Constructeur
         */
        public GroupeDInstructions_Boucle_Faire_TantQue_ENTCondition(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs)
        {
            // Déclarations
            // ------------
            String nomDeLAttribut;

            XmlNode XMLInterne;



            // Initialisation des membres
            // --------------------------

            // Il est possible de sortir de ce groupe, à l'aide du bloc SortDeLaBoucleFaire
            __bloc_SortDeLaBoucleFaire_Possible = true;



            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc.ChildNodes)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "Condition":
                    __conditionDeBoucle = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;
                }
            }

            XMLInterne = _XMLDuBloc.SelectSingleNode("./statement");
            if (XMLInterne != null)
            {
                __blocsInternes = new __BlocsInternes(UID + 1, XMLInterne.FirstChild, null, this);
            }


            // Liste les séquences du bloc
            // ---------------------------
            __séquences.Add((Séquence)Séquence_1);
            __séquences.Add((Séquence)Séquence_2);
            __séquences.Add((Séquence)Séquence_3);

            __nombreDeBlocsInternes = 1;
        }
        /*
         * Séquences
         */

        // Séquence 1 : Séquence de DEBUT de Boucle_RépèteToutLeTemps
        // - Passe au premier bloc interne
        public String  Séquence_1()
        {
            if (__blocsInternes != null)
            {
                // Passe au premier bloc de la séquence interne
                return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID, __blocsInternes.premierBloc.UID));
            }
            else
            {
                // Passe à la séquence FIN de Boucle_RépèteToutLeTemps
                return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID, UID + 2));
            }
        }
 /*
  * Méthode privées
  */
 private int     ContrôleLaVitesse(int _vitesse)
 {
     if (_vitesse < -100)
     {
         _vitesse = -100;
         Compilateur.AfficheUnMessageDInformation(Messages.Message((int)Messages.TYPE.VITESSE_INFÉRIEURE_A_MOINS_100_POURCENT));
     }
     if (_vitesse > 100)
     {
         _vitesse = 100;
         Compilateur.AfficheUnMessageDInformation(Messages.Message((int)Messages.TYPE.VITESSE_SUPÉRIEURE_A_100_POURCENT));
     }
     return(_vitesse);
 }
        // Séquence 5
        // - Passe au bloc suivant
        public String  Séquence_4()
        {
            String code = "";


            if (Compilateur.afficherLesCommentaires)
            {
                code += "  # (UID " + __UID + " FIN) Instruction Blockly : " + __nomDansBlockly + "\n";
            }

            code += "  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UIDDeLaDernièreSéquence, UIDDuBlocSuivant);

            return(code);
        }
        /*
         * Constructeur
         */
        public Valeur_OpérateurLogique(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs, int _opérationLogique) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs)
        {
            // Déclarations
            // ------------

            String nomDeLAttribut;



            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "Valeur1":
                    __valeur1 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;

                case "Valeur2":
                    __valeur2 = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;
                }
            }


            switch (_opérationLogique)
            {
            case (int)__OPÉRATIONS_LOGIQUES.NOM.OU:
                __code = "(" + __valeur1.codePourLeSéquenceur + " or " + __valeur2.codePourLeSéquenceur + ")";
                break;

            case (int)__OPÉRATIONS_LOGIQUES.NOM.ET:
                __code = "(" + __valeur1.codePourLeSéquenceur + " and " + __valeur2.codePourLeSéquenceur + ")";
                break;

            case (int)__OPÉRATIONS_LOGIQUES.NOM.NON:
                __code = "not (" + __valeur1.codePourLeSéquenceur + ")";
                break;
            }
        }
Exemplo n.º 24
0
        /*
         * Constructeur
         */
        public Variable_DéfinirUneVariable(int _UID, XmlNode _XMLDuBloc, __Bloc _blocPrécédent, __GroupeDeBlocs _groupeDeBlocs) : base(_UID, _XMLDuBloc, _blocPrécédent, _groupeDeBlocs)
        {
            // Déclarations
            // ------------

            String erreur;
            String nomDeLAttribut;



            // Traitements
            // -----------

            // Analyse du Bloc d'instruction
            foreach (XmlNode XMLDUnNoeudFils in _XMLDuBloc)
            {
                nomDeLAttribut = "";
                if (XMLDUnNoeudFils.Attributes["name"] != null)
                {
                    nomDeLAttribut = XMLDUnNoeudFils.Attributes["name"].Value;
                }

                switch (nomDeLAttribut)
                {
                case "VAR":
                    __nom = XMLDUnNoeudFils.FirstChild.InnerText;
                    break;

                case "VALUE":
                    __expression = Compilateur.AnalyseUnNoeudDExpression(_UID, XMLDUnNoeudFils.FirstChild, _blocPrécédent, _groupeDeBlocs);
                    break;
                }
            }

            if (__expression == null)
            {
                erreur = String.Format(Messages.Message((int)Messages.TYPE.VARIABLE_NON_INITIALISÉE), __nom);
                throw new Exception(erreur);
            }


            __Variable.AjouteUneVariable(__nom);


            // Liste les séquences du bloc
            // ---------------------------
            __séquences.Add((Séquence)Séquence_1);
        }
Exemplo n.º 25
0
        /*
         * Séquences
         */

        // Séquence 1
        public String  Séquence_1()
        {
            __GroupeDeBlocs groupeDeBlocs;

            if (__groupeDeBlocs == null)
            {
                // Le bloc n'est pas dans un groupe, on passe au bloc suivant
                return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID, UIDDuBlocSuivant));
            }
            else
            {
                // Le bloc est dans un groupe FAIRE, on sort de ce groupe
                groupeDeBlocs = __GroupeDeBlocs.groupeDInstructions_Faire_AuDessus(__groupeDeBlocs);
                return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID, groupeDeBlocs.UIDDuBlocSuivant));
            }
        }
Exemplo n.º 26
0
        /*
         * Séquences
         */

        // Séquence 1
        // - Enregistre la valeur dans la variable
        // - Passe au bloc suivant
        public String  Séquence_1()
        {
            String code;



            code = "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";
            if (__expression.codeDInitialisationPourLeSéquenceur != "")
            {
                code += "    " + __expression.codeDInitialisationPourLeSéquenceur + "\n";
            }
            code += "    " + __Variable.code(__nom) + "=" + __expression.codePourLeSéquenceur + "\n" +
                    "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                    "  end";

            return(code);
        }
 // Séquence 2
 // - Décrémente le nombre de boucle
 //   - Si le nombre de boucle est >0, passe au premier bloc interne
 //   - Si le nombre de boucle est =0, passe au bloc de fin
 public String  Séquence_2()
 {
     if (__blocsInternes != null)
     {
         return("  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID + 1) + " then\n" +
                "    __boucle[" + (__UIDDeBoucle - 1) + "]--\n" +
                "    if __boucle[" + (__UIDDeBoucle - 1) + "]>0 then\n" +
                "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(__blocsInternes.premierBloc.UID) + "\n" +
                "    else\n" +
                "      __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UIDDuBlocSuivant) + "\n" +
                "    end\n" +
                "  end");
     }
     else
     {
         return("  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID + 1, UIDDuBlocSuivant));
     }
 }
        // Séquence 4
        // - Passe au second bloc du groupe
        public String  Séquence_4()
        {
            String code = "";

            if (Compilateur.afficherLesCommentaires)
            {
                code += "  # (UID " + __UID + " FIN) Instruction Blockly : " + __nomDansBlockly + "\n";
            }

            if (__blocsInternes != null)
            {
                code += "  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, __blocsInternes.premierBloc.UID + __blocsInternes.nombreDeSéquence, UID + 1);
            }
            else
            {
                code += "  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID + 2, UID + 1);
            }

            return(code);
        }
        /*
         * Séquences
         */

        // Séquence 1
        // - Joue le son demandé
        // - Passe à la séquence suivante
        public String  Séquence_1()
        {
            String code;

            code = "  if __sequenceur[" + UIDDuSéquenceur + "]==" + Compilateur.ComplèteÀZéro(UID) + " then\n";

            if (__son == (int)__SONS.SON.DEPUIS_LE_MICROPHONE)
            {
                code += "    __lectureDUnSon=1\n" +
                        "    call sound.replay(" + __son + ")\n";
            }
            else
            {
                code += "    __son = " + __son + "\n" +
                        "    callsub __JoueUnSon\n";
            }
            code += "    __sequenceur[" + UIDDuSéquenceur + "]=" + Compilateur.ComplèteÀZéro(UID + 1) + "\n" +
                    "  end";

            return(code);
        }
        // Séquence 3 : Séquence de FIN de Boucle_RépèteToutLeTemps
        // - Passe au premier bloc du groupe
        public String  Séquence_3()
        {
            String code = "";

            if (Compilateur.afficherLesCommentaires)
            {
                code += "  # (UID " + __UID + " FIN) Instruction Blockly : " + __nomDansBlockly + "\n";
            }

            // Boucle sur l'instruction de DEBUT de Boucle_RépèteToutLeTemps
            if (__blocsInternes != null)
            {
                code += "  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, __blocsInternes.premierBloc.UID + __blocsInternes.nombreDeSéquence, UID);
            }
            else
            {
                code += "  " + Compilateur.codeSauteSéquence(UIDDuSéquenceur, UID + 2, UID);
            }

            return(code);
        }