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(); }