private void Movimento(object pedina, EventArgs e) // gestisce i movimenti delle pedine { Controllo controllo = Controllo.Instance(); Dado dado1 = Dado.Instance("dado1"); // dado di sinistra Dado dado2 = Dado.Instance("dado2"); // dado di destra string messaggio = "ERROR"; if (controllo.DadoScelto() != null) { if (dadiLanciati) { switch (controllo.QualeMovimento(controllo.MostraTurno())) { case "Muovi": messaggio = controllo.MuoviPedina(pedina, controllo.MostraTurno()); break; case "Rimetti": messaggio = controllo.RimettiPedina(pedina, controllo.MostraTurno()); break; case "Scelta": if (dado1.Valore != 0 || dado2.Valore != 0) { using (Scelta scelta = new Scelta()) { if (scelta.ShowDialog() == DialogResult.OK) { messaggio = controllo.MuoviPedina(pedina, controllo.MostraTurno()); } else if (scelta.ShowDialog() == DialogResult.Cancel) { messaggio = controllo.TogliPedina(controllo.MostraTurno()); } } } break; } } switch (messaggio) { case "Non ci sono\nmosse disponibili": CambioTurno(); lblInfoBox.Text = messaggio; break; case "OK": controllo.DadoScelto().DecrementaUtilizziDado(); controllo.DadoScelto().AzzeraValore(); if (controllo.UtilizziRimasti()) { lblInfoBox.Text = "Scegli il dado"; } else { CambioTurno(); } break; default: lblInfoBox.Text = messaggio; break; } controllo.AggiornaDadi(); controllo.ContaPedine(); ControllaVittoria(); } }