Beispiel #1
0
        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();
            }
        }