private void sprawdzWygrana() { plansza.uaktualnijTempPlanszy(plansza.stan); operacje.generujBiciaWilkow(1, plansza); operacje.generujMozliweRuchyWilkow(1, plansza); if (operacje.ListaBic.Count == 0 && operacje.ListaRuchow.Count == 0) { koniecGry kg = new koniecGry(true, this); kg.Show(); this.Close(); } }
public void utworzDrzewo2(Wezel wezel, int poziom, int zawodnik, bool Min, bool Max) { operacje.ListaRuchow.Clear(); operacje.ListaBic.Clear(); int przeciwnik = -1; bool Min2 = false; bool Max2 = true; if (zawodnik == 1) { przeciwnik = 2; } else if (zawodnik == 2) { przeciwnik = 1; } if (Min == false && Max == true && poziom != 0) { Min2 = true; Max2 = false; } else if (Min == true && Max == false && poziom != 0) { Min2 = false; Max2 = true; } if (poziom < ilePoziomow) { if (poziom == 0) { operacje.generujBiciaWilkow(1, this.plansza_poczatkowa); // dodajemy jako potomkow mozliwe bicia for (int j = 0; j < operacje.ListaBic.Count; j++) { //Console.WriteLine("poziom "+poziom+" kulka: " + j + ": dodaje wezel bicia: [" + operacje.ListaBic[j].skad.x + "," + operacje.ListaBic[j].skad.y + "] -->" + "[" + operacje.ListaBic[j].dokad.x + "," + operacje.ListaBic[j].dokad.y + "]"); wezel.dodajWezel(operacje.ListaBic.ElementAt(j), false, true, zawodnik, operacje, 0); } if (operacje.ListaBic.Count == 0) //tylko jeśli nie ma bić to dodajemy jako potomkow mozliwe ruchy { operacje.generujMozliweRuchyWilkow(1, this.plansza_poczatkowa); for (int j = 0; j < operacje.ListaRuchow.Count; j++) { //Console.WriteLine("poziom " + poziom+ " kulka: " + j + ": dodaje wezel ruchu: [" + operacje.ListaRuchow[j].skad.x + "," + operacje.ListaRuchow[j].skad.y + "] -->" + "["+ operacje.ListaRuchow[j].dokad.x + "," + operacje.ListaRuchow[j].dokad.y + "]"); root.dodajWezel(operacje.ListaRuchow.ElementAt(j), false, true, zawodnik, operacje, 0); } } // wywolanie rekurencyjne dla potomkow for (int i = 0; i < wezel.lista_potomkow.Count; i++) { utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, true, false); } } else { operacje.ListaRuchow.Clear(); operacje.ListaBic.Clear(); //dla owiec if (Min == true && Max == false) { //Console.WriteLine("poziom " + poziom + " pusty node na owiec"); Ruch r = new Ruch(); r.skad.x = 1; r.skad.y = 0; r.dokad.x = 1; r.dokad.y = 0; //wezel.plansza.pokazStanPlanszy(); wezel.dodajWezel(r, Min, Max, 2, operacje, 0); for (int i = 0; i < wezel.lista_potomkow.Count; i++) { utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, Min2, Max2); } } //dla wilkow if (Max == true && Min == false) { operacje.generujBiciaWilkow(zawodnik, wezel.plansza); for (int j = 0; j < operacje.ListaBic.Count; j++) { //Console.WriteLine("poziom " + poziom + " kulka: " + j + ": dodaje wezel bicia: [" + operacje.ListaBic[j].skad.x + "," + operacje.ListaBic[j].skad.y + "] -->" + "[" + operacje.ListaBic[j].dokad.x + "," + operacje.ListaBic[j].dokad.y + "]"); wezel.dodajWezel(operacje.ListaBic.ElementAt(j), Min, Max, 1, operacje, 1); } if (operacje.ListaBic.Count == 0)//tylko jeśli nie ma bić to dodajemy jako potomkow mozliwe ruchy { operacje.generujMozliweRuchyWilkow(zawodnik, wezel.plansza); for (int j = 0; j < operacje.ListaRuchow.Count; j++) { //Console.WriteLine("poziom " + poziom + " kulka: " + j + ": dodaje wezel ruchu: [" + operacje.ListaRuchow[j].skad.x + "," + operacje.ListaRuchow[j].skad.y + "] -->" + "[" + operacje.ListaRuchow[j].dokad.x + "," + operacje.ListaRuchow[j].dokad.y + "]"); wezel.dodajWezel(operacje.ListaRuchow.ElementAt(j), Min, Max, 1, operacje, 0); } } for (int i = 0; i < wezel.lista_potomkow.Count; i++) { utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, Min2, Max2); } } } } }