示例#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
        }//end turnoGiocatore

        //metodo per gestire il turno dei bot
        private void turnoBot(Pedina p)
        {
            int tiro = lanciaDadi();

            sposta(p, p.muovi(tiro));
            OnPosizione_Updated.Invoke(this, new ArgEvento <Pedina>(p));
        }//end turnoBot
示例#4
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));
 }
示例#5
0
        //metodo che inizializza le variabili principali
        public void inizializza()
        {
            _caselle    = new List <Casella>();
            _pedine     = new List <Pedina>();
            _vincitore  = false;
            _inPrigione = null;
            _inPozzo    = null;

            popolaCaselle();
            popolaPedine();
        }//end load
示例#6
0
        //metodo per gestire il turno dell'utente
        private void turnoGiocatore(Pedina p)
        {
            int tiro = 0;

            //se la pedina non è in attesa o in prigione
            //lancio il dado, altrimenti passo 0 come lancio
            if (!p.inAttesa && _inPrigione != p && _inPozzo != p)
            {
                tiro = lanciaDadi();
            }
            OnValueDadi_Updated.Invoke(this, new ArgEvento <int>(tiro));
            sposta(p, p.muovi(tiro));
            OnPosizione_Updated.Invoke(this, new ArgEvento <Pedina>(p));
        }//end turnoGiocatore
示例#7
0
        }//end turnoBot

        //metodo per spostare le pedina
        public void sposta(Pedina p, int posizione)
        {
            _caselle[posizione].effetto(this, p, OnEffetto_Applied);
        }
示例#8
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));
 }
示例#9
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));
 }
示例#10
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);