Duda con programación en C#

bonilleta

Bueno os explico, estoy terminando ya de hacer el juego del Tic Tac Toe y lo estoy haciendo en Visual Studio 12 (con plantilla WPF en C#).

La question es que lo he hecho con imagenes, y lo unico que me queda es poner la comparación y el condicional de quien es el ganador.

La cosa es que me han dicho que tendria que hacerlo con el .TAG ya que son objetos. Lo que he intentado es esto:

[[[ imageImage -> es el primer pictureBox
image2Image-> es el segundo picturebox y estos dos van en horizontal, por lo tanto el 3 es el ultimo de la linea horizontal.
uno = a la imagen de la X
dos seria = a la imagen de la O ]]]]

AQUI EL CODIGO

if ((imageImage.Tag == uno && image2Image.Tag == uno && image3Image.Tag == uno))
            {
                if (victoria)            //victoria es un Bool que cuando es TRUE gana el jugador 1 y cuando es FALSE gana el jugador 2
                {
                    string ganador = "";

                if (turn)  //turn es un bool que cuando es TRUE es el turno del jugador1 i cuando es FALSE es el del jugador2.
                {
                    ganador = "JUGADOR 1";
                }
                else
                {
                    ganador = "JUGADOR 2";
                }

                MessageBox.Show("El " + ganador + " Gana!");
        }

la question es que me lo acepta, pero cuando inicio y las tres imagenes son iguales, no pasa nada, se queda igual.

Si me podeis ayudar lo agradeceria Gracias :)

KarlosWins

.

1 respuesta
bonilleta

#2 Perdon error mio, me equivoqué al comentar. Este bool hace referencia a victoria, es decir:

Cuando hay victoria (true) entra en esa condicion entonces una vez dentro la victoria puede ser del jugador 1 o del 2, perdon he copiado mal.

Aver si me podeis ayudar

Gracias

Soltrac

Sin ver el código completo es imposible.

bornex

El problema que tienes es sencillo, cuando victoria es false, no entra en el if. Entonces la variable ganador no se declara y se salta todo lo demás.

No se que más código hay abajo, pero deberías de declarar la variable ganador fuera de ese if y ya modificarla dentro.

Algo así:

    if ((imageImage.Tag == uno && image2Image.Tag == uno && image3Image.Tag == uno))
                {
                    string ganador = "";
                    if (victoria)
                    {  
ganador = "JUGADOR 1";
} else{ ganador = "JUGADOR2"; } MessageBox.Show("El " + ganador + " Gana!"); }
1 respuesta
bonilleta

#5 Perfecto! Esa era la questión, debido a otro bool escrito anteriormente, me obligue a mi mismo a poner este bool en FALSE, por lo tanto no entraba en el if como bien dices.

Ya esta todo resuelto, gracias cracks.

1 respuesta
Gantorys

#6 con el operador ternario te ahorrarías unas líneas

string ganador = victoria ? 'Jugador 1' : 'Jugador 2';
2 respuestas
bornex

#7 Cierto, aun que nunca me ha gustado ese operador. :P

1 respuesta
bonilleta

#7 Si, lo se pero como dice #8 no me gusta nada :D

Usuarios habituales

  • bonilleta
  • bornex
  • Gantorys
  • Soltrac
  • KarlosWins