private void TahPocitace(Tah tah) { Deska.Tahni(tah); Deska.OdstranPreskoceneKameny(tah); // Uložíme si aktuální tah do záznamu celé hry TahyZpet.Push((Tah) tah.Clone()); // Vynulujeme zásobník s redo tahy TahyVpred.Clear(); PrehodHraceNaTahu(); if(PocetTahu >= LimitTahu) { KonecHry = true; Vitez = MoznostiVyher.remiza; } else { Vitez = Rozhodci.KdoVyhral(Deska); if(Vitez != MoznostiVyher.nikdo) { KonecHry = true; } } }
/// <summary> /// Vrátí hru o jeden tah zpět. /// </summary> public Manazer TahZpet() { Tah zpetnyTah = TahyZpet.Peek(); TahyVpred.Push(TahyZpet.Pop()); if(zpetnyTah.PocetTahu() == 1) { Deska.VratZpatkyTah(zpetnyTah); NastaveniObranci = false; hracNaTahu = Manazer.StavPole.obrana; return this; } Deska.VratZpatkyTah(zpetnyTah); Deska.PridejPreskoceneKameny(zpetnyTah); PrehodHraceNaTahu(); KonecHry = false; Vitez = MoznostiVyher.nikdo; return this; }
public void ZjistiViteze() { if (PocetTahu >= LimitTahu) { KonecHry = true; Vitez = MoznostiVyher.remiza; } else { Vitez = Rozhodci.KdoVyhral(Deska); if (Vitez != MoznostiVyher.nikdo) { KonecHry = true; } } }
/// <summary> /// Prostě restartuje hru. /// </summary> public void Restart() { Deska = new HraciDeska(); NastaveniObranci = false; hracNaTahu = Manazer.StavPole.obrana; Deska.Restart(); this.KonecHry = false; PocetTahu = 0; Vitez = MoznostiVyher.nikdo; TahyZpet = new Stack<Tah>(); TahyVpred = new Stack<Tah>(); if(Obrance.umelaInteligence) { NastavObrance(); } }