Exemple #1
0
        public string IngresarLetra(string letra)
        {
            if (Palabra.Contains(letra))
            {
                for (int i = 0; i <= Palabra.Length - 1; i++)
                {
                    string letraAux = Palabra.Substring(i, 1);
                    if (letra == letraAux)
                    {
                        PalabraAdivinada = PalabraAdivinada.Remove(i, 1);
                        PalabraAdivinada = PalabraAdivinada.Insert(i, letra);
                    }
                }

                if (PalabraAdivinada.Contains("-"))
                {
                    return(PalabraAdivinada);
                }
                else
                {
                    return("Palabra adivinada");
                }
            }
            else
            {
                LetrasErradas = LetrasErradas.Insert(indiceLetraErrada, letra);
                indiceLetraErrada++;
                ContErrores++;
                if (ContErrores == 6)
                {
                    return("Perdiste, queso");
                }
                return("letra incorrecta");
            }
        }
Exemple #2
0
        public static void Procurar(string Texto)
        {
            string[] Linhas = System.IO.File.ReadAllLines(Directory.GetCurrentDirectory() + "\\dicionario.txt"); //Nao recomendo para dicionarios grandes. Para arquivo grandes recomendo dividir em pedacos
            string   PalavraLowerCase;
            string   PedacoLowerCase;
            int      PosicaoPedaco = 0; // Index da array do texto separado a ser procurado. existe como funcionar sem isso porem, nao recomendo

            char[] LetrasErradas;
            char[] LetrasContidas;
            Dictionary <int, string[]> PalvrasCompativeis  = new Dictionary <int, string[]>();
            Dictionary <char, int>     MelhorPossivelLetra = new Dictionary <char, int>(); // Dicionario das letras que mais apareceram nos "buracos"
            Form1 frm = (Form1)Application.OpenForms["Form1"];

            LetrasErradas  = frm.textBox2.Text.ToCharArray();
            LetrasContidas = SepararLetrasContidas(Texto);
            List <string>          Melhor_Palavra           = new List <string>();          // Dicionario Das palavras que se encaixam
            Dictionary <char, int> AgoraMelhorPossivelLetra = new Dictionary <char, int>(); // Dicionario das letras que apareceram nos "buracos" (letra,vezes)

            foreach (string Pedaco in Texto.Split(' '))
            {
                Melhor_Palavra.Clear();
                foreach (string Palavra in Linhas)
                {
                    if (Pedaco.Length != Palavra.Length)
                    {
                        continue;
                    }

                    PalavraLowerCase = Palavra.ToLower();
                    PedacoLowerCase  = Pedaco.ToLower();
                    bool Adicionado      = false;
                    bool LetraAdicionada = false;
                    for (int x = 0; x != PedacoLowerCase.Length; x++) // Esse codigo pode e deve ser melhor optimizado para maiores dicionarios, eu so nao sei como
                    {
                        if (LetrasErradas.Contains(PalavraLowerCase[x]))
                        {
                            if (Adicionado == true)
                            {
                                Melhor_Palavra.Remove(PalavraLowerCase);
                            }
                            if (LetraAdicionada == true)
                            {
                                AgoraMelhorPossivelLetra.Clear();
                            }

                            break;
                        }
                        if (PedacoLowerCase[x].Equals('?') && !LetrasContidas.Contains(PalavraLowerCase[x]))
                        {
                            LetraAdicionada = true;
                            if (AgoraMelhorPossivelLetra.ContainsKey(PalavraLowerCase[x]))
                            {
                                AgoraMelhorPossivelLetra[PalavraLowerCase[x]] = AgoraMelhorPossivelLetra[PalavraLowerCase[x]] + 1;
                            }
                            else
                            {
                                AgoraMelhorPossivelLetra.Add(PalavraLowerCase[x], 1);
                            }
                            continue;
                        }

                        if (PedacoLowerCase[x].Equals(PalavraLowerCase[x]))
                        {
                            if (Adicionado == false)
                            {
                                Melhor_Palavra.Add(PalavraLowerCase);
                                Adicionado = true;
                            }
                            continue;
                        }
                        else
                        {
                            if (Adicionado == true)
                            {
                                Melhor_Palavra.Remove(PalavraLowerCase);
                            }
                            if (LetraAdicionada == true)
                            {
                                AgoraMelhorPossivelLetra.Clear();
                            }
                            break;
                        }
                    }
                    MelhorPossivelLetra = MesclarDicionarios(MelhorPossivelLetra, AgoraMelhorPossivelLetra);
                }
                PalvrasCompativeis.Add(PosicaoPedaco, Melhor_Palavra.ToArray());
                PosicaoPedaco++;
            }
            frm.PossiveisPalavras = PalvrasCompativeis;
            frm.comboBox1.Items.Clear();
            foreach (int k in Enumerable.Range(1, PosicaoPedaco))
            {
                frm.comboBox1.Items.Add(k);
            }
            frm.listBox1.Items.Clear();
            frm.listBox1.Items.AddRange(PalvrasCompativeis[0]);
            frm.comboBox1.Text = "1";
            if (MaiorValorChar(MelhorPossivelLetra) != "\0")
            {
                frm.label2.Text = "Melhor escolha de letra possivel : " + MaiorValorChar(MelhorPossivelLetra);
            }
            else
            {
                frm.label2.Text = "Palavra nao existe no dicionario";
            }
        }