}//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)); }
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)); }
}//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
/* * 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)); }
//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
//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
}//end turnoBot //metodo per spostare le pedina public void sposta(Pedina p, int posizione) { _caselle[posizione].effetto(this, p, OnEffetto_Applied); }
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)); }
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)); }
/* * 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);