private static bool bLireMot(List <string> lstMots, int iNumMot,
                                     ref clsMotExistant mot)
        {
            mot = new clsMotExistant();
            mot.iNumMotExistant = iNumMot;
            int iNumSegment = (iNumMot * clsMotExistant.iNbColonnes);

            mot.sMot            = lstMots[iNumSegment + clsMotExistant.iColMot];
            mot.sDef            = lstMots[iNumSegment + clsMotExistant.iColDef];
            mot.sPrefixe        = lstMots[iNumSegment + clsMotExistant.iColPrefixe];
            mot.sSuffixe        = lstMots[iNumSegment + clsMotExistant.iColSuffixe];
            mot.sNivPrefixe     = lstMots[iNumSegment + clsMotExistant.iColNivPrefixe];
            mot.iNivPrefixe     = int.Parse(mot.sNivPrefixe);
            mot.sNivSuffixe     = lstMots[iNumSegment + clsMotExistant.iColNivSuffixe];
            mot.iNivSuffixe     = int.Parse(mot.sNivSuffixe);
            mot.sUnicitePrefixe = lstMots[iNumSegment + clsMotExistant.iColUnicitePrefixe];
            mot.sUniciteSuffixe = lstMots[iNumSegment + clsMotExistant.iColUniciteSuffixe];
            mot.sFreqPrefixe    = lstMots[iNumSegment + clsMotExistant.iColFreqPrefixe];
            mot.sFreqSuffixe    = lstMots[iNumSegment + clsMotExistant.iColFreqSuffixe];

            // 01/05/2019
            mot.bElisionPrefixe = false;
            if (clsConst.bElision && mot.sPrefixe.EndsWith(clsConst.sCarElisionO))
            {
                mot.bElisionPrefixe = true;
                mot.sPrefixe        = mot.sPrefixe.Replace(clsConst.sCarElisionO, clsConst.sCarO);
            }

            mot.ParserDefinition();
            mot.Synthese();
            return(true);
        }
        public static void InitMots(List <string> lstMots,
                                    Dictionary <string, clsMotExistant> dicoMotsExistants)
        {
            int iNbItems = lstMots.Count;
            int iNbMots  = iNbItems / clsMotExistant.iNbColonnes;

            for (int i = 0; i <= iNbMots - 1; i++)
            {
                clsMotExistant mot = null;
                if (!bLireMot(lstMots, i, ref mot))
                {
                    if (clsConst.bDebug)
                    {
                        Debugger.Break();
                    }
                    continue;
                }
                if (dicoMotsExistants.ContainsKey(mot.sMot))
                {
                    if (clsConst.bDebug)
                    {
                        Debugger.Break();
                    }
                    continue;
                }
                dicoMotsExistants.Add(mot.sMot, mot);
            }
        }
Example #3
0
        public static int iTirageMotExistantAutre(
            List <string> lstNiv, List <string> lstFreq, int iNumMotExistant,
            clsInitTirage itPrefixe, clsInitTirage itSuffixe,
            List <int> lstNumMotExistant, ref clsMotExistant motAutre)
        {
            // Tirer au hasard un autre mot du niveau demandé
            var enreg = from mot0 in m_dicoMotsExistants.ToList()
                        where
                        lstNiv.Contains(mot0.Value.sNivPrefixe) &&
                        lstNiv.Contains(mot0.Value.sNivSuffixe) &&
                        lstFreq.Contains(mot0.Value.sFreqPrefixe) &&
                        lstFreq.Contains(mot0.Value.sFreqSuffixe) &&
                        !lstNumMotExistant.Contains(iNumMotExistant) &&
                        !itPrefixe.lstSegmentsDejaTires.Contains(mot0.Value.sPrefixe) &&
                        !itSuffixe.lstSegmentsDejaTires.Contains(mot0.Value.sSuffixe) &&
                        !itPrefixe.lstSensSegmentDejaTires.Contains(mot0.Value.sDefPrefixe) &&
                        !itSuffixe.lstSensSegmentDejaTires.Contains(mot0.Value.sDefSuffixe) &&
                        !itPrefixe.lstUnicitesSegmentDejaTires.Contains(mot0.Value.sUnicitePrefixeSynth) &&
                        !itSuffixe.lstUnicitesSegmentDejaTires.Contains(mot0.Value.sUniciteSuffixeSynth)
                        select mot0;

            int iNbEnreg = enreg.Count();

            if (iNbEnreg == 0)
            {
                //if (clsConst.bDebug) Debugger.Break();
                m_msgDelegue.AfficherMsg(
                    "Aucun mot ne correspond à la sélection : Tirage impossible !");
                return(clsConst.iTirageImpossible);
            }

            int iNbMotsExistantsFiltres = iNbEnreg;
            // On tire un nombre compris entre 0 et iNbSegmentsFilres - 1 (liste filtrée)
            int iNumMotExistantTire = clsUtil.iRandomiser(0, iNbMotsExistantsFiltres - 1);

            motAutre = enreg.ElementAtOrDefault(iNumMotExistantTire).Value;
            // Indice du mot dans la liste complète
            int iNumMotExistantAutre = motAutre.iNumMotExistant;

            lstNumMotExistant.Add(iNumMotExistantAutre);
            itPrefixe.lstSegmentsDejaTires.Add(motAutre.sPrefixe);
            itSuffixe.lstSegmentsDejaTires.Add(motAutre.sSuffixe);
            itPrefixe.lstSensSegmentDejaTires.Add(motAutre.sDefPrefixe);
            itSuffixe.lstSensSegmentDejaTires.Add(motAutre.sDefSuffixe);
            itPrefixe.lstUnicitesSegmentDejaTires.Add(motAutre.sUnicitePrefixeSynth);
            itSuffixe.lstUnicitesSegmentDejaTires.Add(motAutre.sUniciteSuffixeSynth);

            if (clsConst.bDebug && string.IsNullOrEmpty(motAutre.sUnicitePrefixeSynth))
            {
                Debugger.Break();
            }
            if (clsConst.bDebug && string.IsNullOrEmpty(motAutre.sUniciteSuffixeSynth))
            {
                Debugger.Break();
            }

            return(iNumMotExistant);
        }