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; }); }
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."); } } } }