/// <summary> /// verplaats een pion de deadpositions naar het begin veld /// </summary> /// <param name="pion"></param> private void PlaatsNieuwePion(Pion pion) { if (pion.IsVerplaatsbaar) { pion.VerplaatsNaarStartVeld(); } }
/// <summary> /// er is een pion verplaats op het bord word er geregeld dat het bord weer de juiste status heeft op de vlakken /// </summary> /// <param name="sender">is de pion die verplaatst is en het event getriggerd heeft</param> /// <param name="e"></param> void pion_Verplaatst(object sender, EventArgs e) { Pion pion = sender as Pion; //oude positie is weer vrij this.ChangeStatus(pion.LaatsteLocatie, VeldStatus.vrij); //verander nu de nieuwe locatie van de pion naar bezet met de kleur van de pion this.ChangeStatus(pion.Locatie, (VeldStatus)pion.Kleur); }
/// <summary> /// kijkt of er nog pionnen geslagen moeten worden /// </summary> /// <param name="locatie"></param> private void CheckOmTeSlaan(int locatie) { Pion pionOmTeSlaan = spel.PionOpLocation(locatie); //als er een pion op locatie waar hij naar toe gaat een pion staat wordt er eerst een opdracht gegeven om deze er af te slaan if (pionOmTeSlaan != null) { spel.SlaPion(pionOmTeSlaan); } }
/// <summary> /// geef de eerste positie terug die bechikbaar is voor deze pion om terug te gaan /// </summary> /// <param name="pion"></param> /// <returns></returns> internal int GeefVrijDeadPosition(Pion pion) { for (int i = 56 + 4 * pion.Kleur; i < 56 + 4 * pion.Kleur + 4; i++) { if (this.Bord.Fields[i] == VeldStatus.vrij) { return(i); } } throw new InvalidOperationException("er is geen vrij positie"); }
/// <summary> /// Deze Pion is gekozen om de actie uit te voeren die mogelijk is op dit moment /// </summary> /// <param name="pion"></param> public void ActieMetPion(Pion pion) { //game moet al wel gestart zijn if (!this.gameStarted) { throw new InvalidOperationException("het spel is nog niet gestart"); } //kijk of er wel met de pion gespeeld mag worden if (pion.IsVerplaatsbaar) { if (pion.Locatie > 55)//56 is de eerste locatie dat een deadposition is { this.PlaatsNieuwePion(pion); } else { this.VerplaatsPion(pion); } //check of speler gewonnen heeft this.CheckVoorWinst(this.ActueeleSpeler); //kijk of de persoon nog een keer mag gooien this.ActueeleSpeler.MagGooien = this.Dobbelsteen.Value == 6; //als de persoon niet meer mag gooien is de volgende speler aan de beurt if (!this.ActueeleSpeler.MagGooien) { this.NieweSpeler(); } else { if (MagGooien != null) { MagGooien(this.Dobbelsteen, new EventArgs()); } } //zorg dat de huidige speler niks meer met zijn pion mag doen this.ActueeleSpeler.Hand.ForEach(x => x.IsVerplaatsbaar = false); } }
//verplaats de pion weer naar de deadpositions internal void SlaPion(Pion pion) { pion.VerplaatsNaarDeadposition(); }
/// <summary> /// verplaats een Pion en aantal stappen vooruit als er net gegooid is /// </summary> /// <param name="pion"></param> private void VerplaatsPion(Pion pion) { pion.Verplaats(this.dobbelsteen.Value); }