// Wrapper metódus -> figyeli tud-e kijátszani az AI kártyát private bool AIJatszKiKartyat(bool felhasznaloAkihivo) { Kartya tmp = AILogika.KartyatKijatszik(Adu, AI, felhasznaloAkihivo); if (tmp != null) { Adu = tmp; String kartyaKijatszosEvent = String.Format("{0} kijátszotta : {1} kártyát\n", AI.Nev, tmp.KartyaNeve()); Megjelenito.AddEvent(kartyaKijatszosEvent); Megjelenito.Takaritas(); Megjelenito.HeaderRajzolas(Adu); //AI.KartyakatMutat(); Thread.Sleep(750); return(true); } else { String ervenytelenLepesString = String.Format("{0} Nem tud mit kijátszani..\n", AI.Nev); Megjelenito.AddEvent(ervenytelenLepesString); Megjelenito.Takaritas(); Megjelenito.HeaderRajzolas(Adu); //AI.KartyakatMutat(); Thread.Sleep(750); return(false); } }
// Játékos kártya kijátszása. figyeli a gomblenyomásokat és hogy valid-e a lépés private bool JatszKiKartyat(Jatekos jatekos, bool felhasznaloAKihivo) { String baseState = "Kártya kijátszása következik! Navigáció : <- / -> nyilakkal, Enter : kártya bedobása, Space : Passzolás, Escape - Feladás"; Megjelenito.HeaderMessage = baseState; Megjelenito.Takaritas(); Megjelenito.HeaderRajzolas(Adu); ConsoleKeyInfo keyinfo; bool validLepesTortent = false; while (!validLepesTortent) { Megjelenito.Takaritas(); Megjelenito.HeaderRajzolas(Adu); Felhasznalo.KartyakatMutat(); keyinfo = Console.ReadKey(true); switch (keyinfo.Key) { case ConsoleKey.Enter: Kartya tmp = jatekos.FokuszaltKartyatKijatszik(Adu, felhasznaloAKihivo); if (tmp != null) { Adu = tmp; String kartyaKijatszosEvent = String.Format("{0} kijátszotta : {1} kártyát\n", jatekos.Nev, tmp.KartyaNeve()); Megjelenito.AddEvent(kartyaKijatszosEvent); validLepesTortent = true; } else { String ervenytelenLepesString = String.Format("Érvénytelen lépés! Ez a kártya nem játszható ki..\n"); Megjelenito.AddEvent(ervenytelenLepesString); } break; case ConsoleKey.Spacebar: Megjelenito.AddEvent(String.Format("{0} passzolt..\n", jatekos.Nev)); validLepesTortent = true; return(false); case ConsoleKey.LeftArrow: Felhasznalo.FokuszaltKartyaSwitch(-1); break; case ConsoleKey.RightArrow: Felhasznalo.FokuszaltKartyaSwitch(1); break; case ConsoleKey.Escape: Megjelenito.Fontos("Játékos feladta a játékot!"); Megjelenito.AddEvent("Játékos feladta a játékot!\n"); JatekVegetErt = true; return(true); default: break; } } return(true); }
// Lapcserét megvalósító algoritmus, lapozza a fokuszált lapot, és ha a user enter nyom lecseréli azt az osztótól kapottra! private void CsereljLapot(int cserelendoLapSzam) { if (cserelendoLapSzam != 0) { String baseState = "Csere szakasz!Választ ki fókuszba a kártyát amit le szeretnél cserélni, majd enterrel cserélj!"; Kartya ujKartya = Oszto.OsztEgyKartyat(); Megjelenito.HeaderMessage = baseState; Felhasznalo.KartyatKap(ujKartya); Megjelenito.AddEvent("Új kártya került felhúzásra " + ujKartya.KartyaNeve() + " " + Felhasznalo.Nev + " által" + "\n"); while (cserelendoLapSzam != 0) { Megjelenito.Takaritas(); Megjelenito.HeaderRajzolas(Adu); Console.WriteLine("Hátra lévő cserék száma: {0}", (cserelendoLapSzam)); Felhasznalo.KartyakatMutat(); ConsoleKeyInfo keyinfo; keyinfo = Console.ReadKey(true); switch (keyinfo.Key) { case ConsoleKey.LeftArrow: Felhasznalo.FokuszaltKartyaSwitch(-1); break; case ConsoleKey.RightArrow: Felhasznalo.FokuszaltKartyaSwitch(1); break; case ConsoleKey.Enter: Megjelenito.AddEvent(Felhasznalo.Nev + " eldobta:" + Felhasznalo.FokuszaltKartyaNeve()); Felhasznalo.FokuszaltKartyatEldob(); Console.WriteLine(); ujKartya = Oszto.OsztEgyKartyat(); Felhasznalo.KartyatKap(ujKartya); Megjelenito.AddEvent("Új kártya került felhúzásra " + ujKartya.KartyaNeve() + "\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Nyomj meg egy gombot a folytatáshoz.."); Console.ForegroundColor = ConsoleColor.White; //Console.ReadKey(true); cserelendoLapSzam--; break; default: // Do nothing... break; } } Felhasznalo.FokuszaltKartyatEldob(); } }
// Új kör esetén sorsolunk ki kezd, majd azután folytatódik tovább a játék public bool UjKorKezdese() { Kezdes(); int i = rnd.Next(0, 101); // Kezdés a felhasználóhoz kerül if (i < 50) { // Megjelenítés Megjelenito.Takaritas(); Megjelenito.HeaderMessage = "Kezdés lehetősége a felhasználónál van...\n"; Megjelenito.HeaderRajzolas(Adu); Felhasznalo.KartyakatMutat(); bool akarFelvevoLenni = KerdezdMegAkarEJátszaniAJatekos(); // Ha a felhasználó szeretne felvevő lenni ide lépünk be.. if (akarFelvevoLenni) { // Végig zongorázzuk azt amikor a játékos a felvevő... StateMachineAmikorJatekosAFelvevo(); } // Felhasználóé volt a kezdés lehetősége de nem élt vele.. else { bool egybolAIDonthetett = false; StateMachineAmikorAIDonthet(egybolAIDonthetett); } } else { bool egybolAIDonthetett = true; StateMachineAmikorAIDonthet(egybolAIDonthetett); } //Megjelenito.ClearEvents(); Megjelenito.AddEvent("Kör lezárult! Új kör kezdődik!\n"); Megjelenito.Fontos("A kör lezárult! Következő kör kezdődik... Kezdéshez nyomj meg egy gombot!"); Console.ReadKey(true); return(JatekVegetErt); }
// Újra inicializálja a kört, új kártyák stb. public void Kezdes() { Oszto = new Oszto(); Felhasznalo = new Jatekos(Felhasznalo.Nev); AI = new Jatekos("AI"); VegeVanMar(); // Győzelem feltétele 4 kör győzelem if (!JatekVegetErt) { ElfogytakAKartyakEgyikJatekosnak = false; adottKorbenElvittUtesek.Clear(); adottKorbenElvittUtesek.Add(Felhasznalo.Nev, 0); adottKorbenElvittUtesek.Add(AI.Nev, 0); Megjelenito.Fontos("Új játék kedődött! Az osztó kiosztja a kártyákat.."); for (int i = 0; i < 4; i++) { Felhasznalo.KartyatKap(Oszto.OsztEgyKartyat()); AI.KartyatKap(Oszto.OsztEgyKartyat()); } Console.WriteLine("\nOsztó végzett a kártyák kiosztásával!"); Adu = Oszto.OsztEgyKartyat(); Megjelenito.Takaritas(); Megjelenito.PrintJatekSzabalyok(); Megjelenito.Fontos("Kezdéshez nyomj meg egy gombot!"); //keyinfo = Console.ReadKey(true); Console.Clear(); } else { Megjelenito.Fontos("A Játék véget ért! Valaki elérte a 4 győzelmet!"); } }
/// <summary> /// Hozzáad új eventet és újrarajzolja a konzolt /// </summary> /// <param name="s"></param> /// <param name="Adu"></param> static public void AddEventEsUjrarajzol(string s, Kartya Adu) { Megjelenito.Takaritas(); AddEvent(s); Megjelenito.HeaderRajzolas(Adu); }