0

estoy trabajando en un juego del ahorcado con C# tengo este método para comparar si la letra que introduce el usuario corresponde a la letra de la palabra que hay que adivinar, y actualiza las letras según sea el caso, el problema es que me esta arrojando esta excepcion: System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.' Como si un objeto estuviera con un valor nulo pero no se cual puede ser,

Agradeceria su ayuda.

  void Compara(object sender, EventArgs e)
        {
            // Boton presionado se desactiva
            bool encontrado = false;
            Button btn = (Button)sender;
            btn.BackColor = Color.Black;
            btn.ForeColor = Color.White;
            btn.Enabled = false;

            // Compara la letra seleccionada con las letras de la palabra
            for (int indiceRevisar = 0; indiceRevisar < PalabrasAdivinadas.Length; indiceRevisar++)
            {

                if (PalabrasAdivinadas[indiceRevisar] == Char.Parse(btn.Text))
                {

                    // Si existe la letra actualiza la palabra agregando el valor correspondiente
                    Button tbx = this.Controls.Find("Adivinando" + indiceRevisar, true).FirstOrDefault() as Button;

                   // EN ESTA LINEA ME APARECE EL ERROR DE LA EXCEPCION
 tbx.Text = PalabrasAdivinadas[indiceRevisar].ToString();
                    PalabrasAdivinadas[indiceRevisar] = '-';
                    encontrado = true;

                }


            }

            // Verifica si todas las letras de la palabra estan destapadas
            bool Ganaste = true;

            for (int indiceAnalizadorGanador = 0; indiceAnalizadorGanador < PalabrasAdivinadas.Length; indiceAnalizadorGanador++)
            {
                // Si el usuario tiene letras pendientes por destapar se cambia el estatus
                if (PalabrasAdivinadas[indiceAnalizadorGanador] != '-')
                {

                    Ganaste = false;

                }

            }

            // Si el estatus de la variable no cambia quiere decir el usuario gano.
            if (Ganaste) { MessageBox.Show("Ganaste ok, ok"); btnIniciarJuego.Image = Properties.Resources.boton3; }

            if(!encontrado)
            {
                Oportunidades = Oportunidades + 1;
                picAhorcado.Image = (Bitmap)Properties.Resources.ResourceManager.GetObject("ahorcado" + Oportunidades);


                // Si las oportunidades ya se acabaron(mostrar la palabra)
                if (Oportunidades == 8)
                {

                    lblMensaje.Visible = true;
                    for (int IndiceValorLetra = 0; IndiceValorLetra < PalabraSeleccionada.Length; IndiceValorLetra++)
                    {

                        Button btnLetra = this.Controls.Find("Adivinado" + IndiceValorLetra, true).FirstOrDefault() as Button;
                        btnLetra.Text = btnLetra.Tag.ToString();

                    }

                    // Desactiva las fichas y cambia el botón de reinicio
                    flFichasDeJuego.Enabled = false;
                    btnIniciarJuego.Image = Properties.Resources.boton3;

                }

            }


        }

0 Answers0