Пример #1
0
        private void PassaTurno(object sender, RoutedEventArgs e)
        {
            if (Passato)
            {
                int Risultato = R.Next(1, 7) + R.Next(1, 7);
                MessageBox.Show(Risultato.ToString());

                if (Giocatori[Turno].InPrigione > 0 && Risultato < 12)
                {
                    if (Giocatori[Turno].InPrigione == 1)
                    {
                        Giocatori[Turno].Soldi -= 5000;
                    }

                    Giocatori[Turno].InPrigione--;
                }
                else
                {
                    Giocatori[Turno].SetPosizione(Risultato, Turno, false);
                    if (Giocatori[Turno].Posizione >= Caselle.Length)
                    {
                        Giocatori[Turno].Soldi += 20000;
                    }

                    if (Caselle[Giocatori[Turno].Posizione] is Speciali)
                    {
                        Speciali Casella = (Speciali)Caselle[Giocatori[Turno].Posizione];
                        switch (Casella.Tipo)
                        {
                        case Tipo_Speciali.Tassa:
                            Giocatori[Turno].Soldi -= Casella.Tassa_Costo;
                            break;

                        case Tipo_Speciali.Prigione:
                            if (Giocatori[Turno].BigliettoPrigione > 0)
                            {
                                MessageBox.Show("Usi il biglietto per saltare la prigione");
                                Giocatori[Turno].BigliettoPrigione--;
                                Giocatori[Turno].SetPosizione(10, Turno, true);
                            }
                            else
                            {
                                MessageBox.Show("Vai in Prigione!");
                                Giocatori[Turno].InPrigione = 3;
                                Giocatori[Turno].SetPosizione(10, Turno, true);
                            }
                            break;

                        case Tipo_Speciali.Probabilita:
                            switch (Probabilita[0].Tipo)
                            {
                            case Tipo_Probabilita.SpostaCasella:
                                Giocatori[Turno].SetPosizione(Probabilita[0].Spostamento, Turno, true);
                                Carta.Scorri(ref Probabilita);
                                break;

                            case Tipo_Probabilita.SpostaNumero:
                                Giocatori[Turno].SetPosizione(Probabilita[0].Spostamento, Turno, false);
                                Carta.Scorri(ref Probabilita);
                                break;

                            case Tipo_Probabilita.Tassa:
                                Giocatori[Turno].Soldi += Probabilita[0].Pagamento;
                                Carta.Scorri(ref Probabilita);
                                break;

                            case Tipo_Probabilita.TassaGlobale:
                                foreach (Giocatore G in Giocatori)
                                {
                                    if (G != Giocatori[Turno])
                                    {
                                        G.Soldi -= Probabilita[0].Pagamento;
                                    }
                                    else
                                    {
                                        G.Soldi += Probabilita[0].Pagamento * (Giocatori.Length - 1);
                                    }
                                }
                                Carta.Scorri(ref Probabilita);
                                break;

                            case Tipo_Probabilita.UscitaPrigione:
                                Giocatori[Turno].BigliettoPrigione++;
                                Carta.RimuoviPrigione(ref Probabilita);
                                Carta.Scorri(ref Probabilita);
                                break;
                            }
                            break;
                        }
                    }
                    if (Caselle[Giocatori[Turno].Posizione] is Proprieta)
                    {
                        Proprieta ProprietaCorrente = (Proprieta)Caselle[Giocatori[Turno].Posizione];
                        ProprietaCorrente.Rendita(Giocatori[Turno]);
                    }
                }

                Passato = false;
            }

            else
            {
                bool ForzaVendita = false;
                if (Giocatori[Turno].Soldi < 0)
                {
                    if (Giocatori[Turno].Proprieta.Count > 0)
                    {
                        MessageBox.Show("Non puoi passare perchè andresti in bancarotta, vendi qualcosa!");
                        ForzaVendita = true;
                    }
                    else
                    {
                        MessageBox.Show("Il Giocatore " + (Turno + 1) + " è andato in bancarotta!");
                        Giocatori[Turno].InGioco = false;
                    }
                }

                if (!ForzaVendita)
                {
                    do
                    {
                        Turno++;
                        if (Turno == Giocatori.Length)
                        {
                            Turno = 0;
                        }
                    }while (!Giocatori[Turno].InGioco);

                    Passato = true;
                    MessageBox.Show("E' il turno del Giocatore " + (Turno + 1));
                }
            }

            Menu_Azioni.Visibility = Visibility.Collapsed;
            AggiornaInterfaccia();
        }