Exemplo n.º 1
0
        private void BtnJugar_Click(object sender, EventArgs e)
        {
            int tamanioDeLasTorres = cmbCantidadDeDiscos.SelectedIndex + 1;

            origen             = new Torre(tamanioDeLasTorres);
            auxiliar           = new Torre(tamanioDeLasTorres);
            destino            = new Torre(tamanioDeLasTorres);
            panelJuego.Visible = true;
            MostrarLabels();
            InitializeLabels();
            UbicarLabels();
            lblMovimientosMinimos.Text = CalcularMovimientosMinimos().ToString();
            for (int i = tamanioDeLasTorres; i > 0; i--)
            {
                origen.Push(new Disco(i));
            }
            btnMenu.Visible               = true;
            btnReiniciar.Visible          = true;
            btnSolucionar.Enabled         = true;
            btnSolucionar.Visible         = true;
            lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
            btnJugar.Visible              = false;
            panelJuego.Controls.OfType <Control>().Where(ctr => ctr is Disco).ToList().ForEach(ctr =>
            {
                ctr.MouseDown += Ctr_MouseDown;
                ctr.MouseUp   += Ctr_MouseUp;
                ctr.MouseMove += Ctr_MouseMove;
            });
        }
Exemplo n.º 2
0
 private void Ctr_MouseUp(object sender, MouseEventArgs e)
 {
     if (mousePresionado)
     {
         mousePresionado = false;
         Point ubicacion = ((Control)sender).Location;
         if ((ubicacion.X > label4.Location.X) && (ubicacion.X < (label4.Location.X + label4.Size.Width)))
         {
             if (origen.GetContador() == 0)
             {
                 origen.Push(previa.Pop());
                 if (origen != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else if (previa.GetTamanioDeDisco() <= origen.GetTamanioDeDisco())
             {
                 origen.Push(previa.Pop());
                 if (origen != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else
             {
                 previa.Push(previa.Pop());
             }
         }
         else if ((ubicacion.X > label6.Location.X) && (ubicacion.X < (label6.Location.X + label6.Size.Width)))
         {
             if (auxiliar.GetContador() == 0)
             {
                 auxiliar.Push(previa.Pop());
                 if (auxiliar != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else if (previa.GetTamanioDeDisco() <= auxiliar.GetTamanioDeDisco())
             {
                 auxiliar.Push(previa.Pop());
                 if (auxiliar != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else
             {
                 previa.Push(previa.Pop());
             }
         }
         else if ((ubicacion.X > label9.Location.X) && (ubicacion.X < (label9.Location.X + label9.Size.Width)))
         {
             if (destino.GetContador() == 0)
             {
                 destino.Push(previa.Pop());
                 if (destino != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else if (previa.GetTamanioDeDisco() <= destino.GetTamanioDeDisco())
             {
                 destino.Push(previa.Pop());
                 if (destino != previa)
                 {
                     movimientosRealizados++;
                     lblMovimientosDelJugador.Text = movimientosRealizados.ToString();
                 }
             }
             else
             {
                 previa.Push(previa.Pop());
             }
         }
         else
         {
             previa.Push(previa.Pop());
         }
         if (movimientosRealizados == 1)
         {
             btnSolucionar.Enabled = false;
             btnReiniciar.Enabled  = true;
         }
         if (destino.GetContador() == (cmbCantidadDeDiscos.SelectedIndex + 1))
         {
             if (movimientosRealizados > int.Parse(lblMovimientosMinimos.Text))
             {
                 MessageBox.Show("¡¡¡Ganaste!!!\n" +
                                 "Muy bien, lo has conseguido, pero puedes mejorar.");
             }
             else
             {
                 MessageBox.Show("¡¡¡Ganaste!!!\n" +
                                 "¡Felicidades! Lo has conseguido en " + lblMovimientosDelJugador.Text +
                                 " movimientos.");
             }
         }
     }
 }