public static void CPlay() { if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Program.okno.Enabled = false; WinLose x = new WinLose(Program.okno, kto); x.ShowDialog(); Gra.CleanGame(); return; } bool juzPo = true; for (int i = 0; i < Computer.Count(); i++) { if (Computer.ElementAt(i).czyMoznaPolozycNa(Zagrane.Peek())) { int ilosc = 1; Zagrane.Push(Computer.ElementAt(i)); Computer.RemoveAt(i); juzPo = false; gracz = false; Zagrane.Peek().funkcja(ilosc); gracz = true; break; } } if (juzPo) { Karta dodana; if (Gra.Ukryte.Count() > 1) { dodana = Gra.Ukryte.Pop(); } else { dodana = Gra.Ukryte.Pop(); Karta.utworzStosikZostawJeden(Gra.Zagrane, Gra.Ukryte); } if (dodana.czyMoznaPolozycNa(Zagrane.Peek())) { int ilosc = 1; Zagrane.Push(dodana); gracz = true; Zagrane.Peek().funkcja(ilosc); } else { Computer.Add(dodana); Karta.posortuj(Computer); } } }
//METODY public override void funkcja() { if (Gra.gracz) //CZLOWIEK { if (!zadanie) //Wyznacza zadana karte { Program.okno.wywolajAs(); } else { List<Karta> pasujace = Gra.Human.FindAll( delegate(Karta k) { if ((k.getKolor() == zadany)&&(!(k.czyFunkcyjna()))) return true; return false; }); Karta.posortuj(pasujace); if (pasujace.Count() != 0) //GRACZ MA PASUJACE KARTY { int indeksik = Gra.Human.FindIndex(delegate(Karta k) { if ((k.getKolor() == zadany) && (!(k.czyFunkcyjna()))) return true; return false; }); Gra.Zagrane.Push(Gra.Human.ElementAt(indeksik)); Gra.Human.RemoveAt(indeksik); Program.okno.makeInfoOkno("Zazadano od Ciebie koloru " + zadany + " za pomoca Asa. Dales "+Gra.Zagrane.Peek().getWartosc()+" "+Gra.Zagrane.Peek().getKolor()+"!", "Zadanie z Asa"); } else //GRACZ NIE MA PASUJACYCH { Program.okno.makeInfoOkno("Zazadano od Ciebie koloru " + zadany + " za pomoca Asa. Nie miales pasujacej karty!", "Zadanie z Asa"); } zadanie = false; Gra.CPlay(); } } else //KOMPUTER { if (!zadanie) //Zagral waleta i wyznacza zadanie { Random losowator = new Random(); switch (losowator.Next(4)) { case 0: KartaAs.zadany = Kolor.Pik; break; case 1: KartaAs.zadany = Kolor.Karo; break; case 2: KartaAs.zadany = Kolor.Trefl; break; case 3: KartaAs.zadany = Kolor.Kier; break; } KartaAs.zadanie = true; Gra.gracz = true; if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Program.okno.Enabled = false; WinLose x = new WinLose(Program.okno, kto); x.ShowDialog(); Gra.CleanGame(); return; } this.funkcja(); } else { List<Karta> pasujace = Gra.Computer.FindAll( delegate(Karta k) { if ((k.getKolor() == zadany) && (!(k.czyFunkcyjna()))) return true; return false; }); Karta.posortuj(pasujace); if (pasujace.Count() != 0) //GRACZ MA PASUJACE KARTY { int indeksik = Gra.Computer.FindIndex(delegate(Karta k) { if ((k.getKolor() == zadany) && (!(k.czyFunkcyjna()))) return true; return false; }); Gra.Zagrane.Push(Gra.Computer.ElementAt(indeksik)); Gra.Computer.RemoveAt(indeksik); } zadanie = false; Gra.gracz = true; } } }
//METODY public override void funkcja() { if (Gra.gracz) //CZLOWIEK { if (!zadanie) //Wyznacza zadana karte { Program.okno.wywolajWalet(); } else { List<Karta> pasujace = Gra.Human.FindAll( delegate(Karta k) { if (k.getWartosc() == zadana) return true; return false; }); Karta.posortuj(pasujace); if (pasujace.Count() != 0) //GRACZ MA PASUJACE KARTY { int indeksik = Gra.Human.FindIndex(delegate(Karta k) { if (k.getWartosc() == zadana) return true; return false; }); Gra.Zagrane.Push(Gra.Human.ElementAt(indeksik)); Gra.Human.RemoveAt(indeksik); Program.okno.makeInfoOkno("Zazadano od Ciebie karty " + zadana + " za pomoca Waleta. Dales ja!", "Zadanie z Waleta"); } else //GRACZ NIE MA PASUJACYCH { Program.okno.makeInfoOkno("Zazadano od Ciebie karty " + zadana + " za pomoca Waleta. Nie miales pasujacej!", "Zadanie z Waleta"); } zadanie = false; Gra.CPlay(); } } else //KOMPUTER { if (!zadanie) //Zagral waleta i wyznacza zadanie { Random losowator = new Random(); switch (losowator.Next(8)) { case 0: KartaWalet.zadana = Wartosc.k4; break; case 1: KartaWalet.zadana = Wartosc.k5; break; case 2: KartaWalet.zadana = Wartosc.k6; break; case 3: KartaWalet.zadana = Wartosc.k7; break; case 4: KartaWalet.zadana = Wartosc.k8; break; case 5: KartaWalet.zadana = Wartosc.k9; break; case 6: KartaWalet.zadana = Wartosc.k10; break; case 7: KartaWalet.zadana = Wartosc.kDama; break; } KartaWalet.zadanie = true; Gra.gracz = true; if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Program.okno.Enabled = false; WinLose x = new WinLose(Program.okno, kto); x.ShowDialog(); Gra.CleanGame(); return; } this.funkcja(); } else { List<Karta> pasujace = Gra.Computer.FindAll( delegate(Karta k) { if (k.getWartosc() == zadana) return true; return false; }); Karta.posortuj(pasujace); if (pasujace.Count() != 0) //GRACZ MA PASUJACE KARTY { int indeksik = Gra.Computer.FindIndex(delegate(Karta k) { if (k.getWartosc() == zadana) return true; return false; }); Gra.Zagrane.Push(Gra.Computer.ElementAt(indeksik)); Gra.Computer.RemoveAt(indeksik); } zadanie = false; Gra.gracz = true; } } }
public static void CPlay(Action<int> funkcja, int ile) { if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Program.okno.Enabled = false; WinLose x = new WinLose(Program.okno, kto); x.ShowDialog(); Gra.CleanGame(); return; } funkcja(ile); }
public static void HPlay(List<Karta> wybrane) { gracz = true; if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Program.okno.Enabled = false; WinLose x = new WinLose(Program.okno, kto); x.ShowDialog(); Gra.CleanGame(); return; } int ilosc = wybrane.Count(); for (int prz = ilosc - 1; prz >= 0; prz--) { Zagrane.Push(wybrane.ElementAt(prz)); } bool okok=false; if (Zagrane.Peek().czyFunkcyjna()) okok=true; CPlay(new Action<int>(Zagrane.Peek().funkcja),ilosc); if (!okok) CPlay(); gracz = true; }
private void PlayButton_Click(object sender, EventArgs e) { if (!Gra.Rozgrywka) return; if (((Gra.Human.Count() == 0) || (Gra.Computer.Count() == 0)) && (Gra.Rozgrywka)) { //Wywolanie okienka "Wygrales/Przegrales". bool kto = (Gra.Human.Count() == 0); Enabled = false; WinLose x = new WinLose(this, kto); x.ShowDialog(); Gra.CleanGame(); return; } //ODZNACZENIE ZNACZKOW HumanChoose1.Checked = false; HumanChoose2.Checked = false; HumanChoose3.Checked = false; HumanChoose4.Checked = false; HumanChoose5.Checked = false; int ile_zaznaczonych = 0; List<Karta> grane = new List<Karta>(); int techno = 5; if (Gra.Human.Count() < 5) techno = Gra.Human.Count(); //SKOPIOWANIE ZAZNACZONYCH DO grane for (int i = techno - 1; i >= 0; i--) { if (Gra.Human[left + i].getWybrana()) { ile_zaznaczonych++; grane.Add(Gra.Human[left + i]); grane.Last().setWybrana(false); Gra.Human.RemoveAt(left + i); } } bool blad = false; //SPRAWDZENIE, CZY ILOSC ZAZNACZONYCH JEST POPRAWNA if ((ile_zaznaczonych <= 4) && (ile_zaznaczonych > 0)) { for (int a = 0; a < ile_zaznaczonych; a++) { for (int b = a + 1; b < ile_zaznaczonych; b++) if (!(grane[a].getWartosc() == grane[b].getWartosc())) { blad = true; break; } } //JESLI WSZYSTKIE SA TEJ SAMEJ WARTOSCI if (!blad) { Wartosc kladziona = grane.First().getWartosc(); if (grane.First().czyMoznaPolozycNa(Gra.Zagrane.Peek())) { Gra.HPlay(grane); Gra.gracz = true; } else { for (int licznik = ile_zaznaczonych - 1; licznik >= 0; licznik--) { Gra.Human.Add(grane[licznik]); grane.RemoveAt(licznik); } Karta.posortuj(Gra.Human); } } else { for (int licznik = ile_zaznaczonych - 1; licznik >= 0; licznik--) { Gra.Human.Add(grane[licznik]); grane.RemoveAt(licznik); } Karta.posortuj(Gra.Human); } } else { for (int licznik = ile_zaznaczonych - 1; licznik >= 0; licznik--) { Gra.Human.Add(grane[licznik]); grane.RemoveAt(licznik); } Karta.posortuj(Gra.Human); } left = 0; look_cards(); }