예제 #1
0
        }//end costruttore

        /*
         * Override del metodo effetto.
         * Il metodo sposta la pedina in una data posizione (destinazione) passata
         * all'atto della creazione
         */
        public override void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento)
        {
            int tiro = p.muovi(_destinazione - p.posizione);

            t.sposta(p, tiro);
            evento.Invoke(this, new ArgEvento <Pedina>(p));
        }
예제 #2
0
        public override void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento)
        {
            //se la casella è il pozzo
            if (_idCasella == POZZO)
            {
                //controllo se in pozzo c'è nessuno
                if (t.inPozzo != null && t.inPozzo != p)
                {
                    //se c'è un'altra pedina la libero
                    t.inPozzo.inPozzo = false;
                }
                //poi prendo il posto in pozo
                p.inPozzo = true;
                t.inPozzo = p;
            }
            //altrimenti se la casella è la prigione
            else if (_idCasella == PRIGIONE)
            {
                //controllo se in prigione c'è nessuno
                if (t.inPrigione != null && t.inPrigione != p)
                {
                    //se c'era un'altra pedina la libero
                    t.inPrigione.inPrigione = false;
                }

                //poi prendo il posto in prigione
                p.inPrigione = true;
                t.inPrigione = p;
            }
            evento.Invoke(this, new ArgEvento <Pedina>(p));
        }
예제 #3
0
 /*
  * Override del metodo effetto.
  * Il metodo sposta la pedina di n posizioni pari al tiro
  * effettuato precedentemente.
  */
 public override void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento)
 {
     if (!p.vincitore)
     {
         int tiro = p.muovi(p.tiroPrecedente);
         t.sposta(p, tiro);
     }
     evento.Invoke(this, new ArgEvento <Pedina>(p));
 }
예제 #4
0
 public override void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento)
 {
     //la casella normale non fa nulla in particolare
     evento.Invoke(this, new ArgEvento <Pedina>(p));
 }
예제 #5
0
 public override void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento)
 {
     //metto la pedina in attesa per tre turni
     p.attendi(NUM_TURNI_ATTESA);
     evento.Invoke(this, new ArgEvento <Pedina>(p));
 }
예제 #6
0
 /*
  * Metodo estratto effetto della pedina.
  * Al metodo è passata l'istanza del tavolo, la pedina che invoca l'effetto
  * e l'evento effetto applicato che informa il controllore dell'applicazione dell'effetto
  */
 public abstract void effetto(TavoloDaGioco t, Pedina p, EventHandler <ArgEvento <Pedina> > evento);