// Ha a felhasználót sorsolta ki a gép hogy kezdjen: public void StateMachineAmikorJatekosAFelvevo() { // Újrarajzolás Megjelenito.AddEventEsUjrarajzol("Játékos elvállalta a felvevő szerepét\n", Adu); Felhasznalo.KartyakatMutat(); // AI elvállalja-e a kört? bool AI_ElvállaljaE = AILogika.AIKarEJatszani(); if (AI_ElvállaljaE) { // Ha AI elvállalta Megjelenito.AddEventEsUjrarajzol("AI elvállalta a kört!\n", Adu); Felhasznalo.KartyakatMutat(); // Lapcsere üzemmód.. int csereSzam = KerdezdMegHanyLapotSzeretneCserélniAFelhasznalo(); CsereljLapot(csereSzam); bool felhasznaloHivE = true; // 4 kör van... int j = 0; while (j < 4 && !ElfogytakAKartyakEgyikJatekosnak && !JatekVegetErt) { Megjelenito.AddEventEsUjrarajzol(String.Format("{0} kihívás! A felhasználó a kihívó-e: {1}\n", j, felhasznaloHivE), Adu); AdutFelütAmigKihivoNemTudRakni(felhasznaloHivE); felhasznaloHivE = KartyakatKijatszak(felhasznaloHivE); Trace.WriteLine(String.Format("Felhasznalo kezdett amúgy.. FelhasználóHívE most? {0}, Kör szám: {1}", Felhasznalo, j)); j++; } // Kiértékelés if (adottKorbenElvittUtesek[AI.Nev] < 1) { Megjelenito.AddEvent("AI nem teljesítette az adott körben előírt ütés számot! Fizet a bankba!\n"); eredmeny[Felhasznalo.Nev]++; bank++; } if (adottKorbenElvittUtesek[Felhasznalo.Nev] < 2) { Megjelenito.AddEvent(String.Format("{0} nem teljesítette az adott körben előírt ütés számot! Fizet a bankba!\n", Felhasznalo.Nev)); eredmeny[AI.Nev]++; bank++; } ElvitteEValakiABankot(); // Adott kör lezárult, eredményeket kiírjuk Console.WriteLine(String.Format("\nA kör lezárult! Elvit ütések: {0}:{1} | {2}:{3}", Felhasznalo.Nev, adottKorbenElvittUtesek[Felhasznalo.Nev], AI.Nev, adottKorbenElvittUtesek[AI.Nev])); Megjelenito.Fontos(String.Format("A kör lezárult! Jelenlegi eredmény: {0}:{1} | {2}:{3}", Felhasznalo.Nev, eredmeny[Felhasznalo.Nev], AI.Nev, eredmeny[AI.Nev])); } else { Megjelenito.AddEventEsUjrarajzol("Felhasználó jelentkezett felvevőnek, AI bedobta a lapokat!\n", Adu); } }
// Ha AI dönhet arról, hogy felvevő akar-e lenni akkor ez a sorozat játszódik le public void StateMachineAmikorAIDonthet(bool elsoAkiDonthet) { if (!elsoAkiDonthet) { Megjelenito.AddEventEsUjrarajzol("Játékos nem vállalta el a kört.\n", Adu); } int esely = rnd.Next(0, 101); bool AI_szeretneFelvevoLenni = esely < 50; // Ha AI szeretné elvállalni a Felvevő szerepét: if (AI_szeretneFelvevoLenni) { Megjelenito.AddEventEsUjrarajzol("AI szeretne felvevő lenni...\n", Adu); bool felhasznaloHivE = false; int j = 0; while (j < 4 && !ElfogytakAKartyakEgyikJatekosnak && !JatekVegetErt) { Megjelenito.AddEventEsUjrarajzol(String.Format("{0}. kihívás! A felhasználó a kihívó-e: {1}\n", j + 1, felhasznaloHivE), Adu); AdutFelütAmigKihivoNemTudRakni(felhasznaloHivE); Trace.WriteLine(String.Format("AI kezdett amúgy.. FelhasználóHívE most? {0}, Kör szám: {1}", Felhasznalo, j)); felhasznaloHivE = KartyakatKijatszak(felhasznaloHivE); j++; } // Kiértékelés if (adottKorbenElvittUtesek[AI.Nev] < 2) { eredmeny[Felhasznalo.Nev]++; bank++; Megjelenito.AddEvent("AI nem teljesítette az adott körben előírt ütés számot! Fizet a bankba!\n"); } if (adottKorbenElvittUtesek[Felhasznalo.Nev] < 1) { eredmeny[AI.Nev]++; bank++; Megjelenito.AddEvent(String.Format("{0} nem teljesítette az adott körben előírt ütés számot! Fizet a bankba!\n", Felhasznalo.Nev)); } ElvitteEValakiABankot(); // Adott kör lezárult, eredményeket kiírjuk Megjelenito.Fontos(String.Format("A kör lezárult! Jelenlegi eredmény: {0}:{1} | {2}:{3}", Felhasznalo.Nev, eredmeny[Felhasznalo.Nev], AI.Nev, eredmeny[AI.Nev])); } else { Megjelenito.AddEventEsUjrarajzol("AI nem szeretne felvevő lenni!\n", Adu); } }
//Egészen addig amig a kihivó játékos kezében nincs legalább 1 szín ami megegyezik az aduval, addig az osztó új kártyát oszt. private void AdutKerAmigNincsMegfeleloSzineAHivonak(Jatekos kihivo) { while (true) { if (kihivo.VanAdottSzinuKartyaja(Adu.Szin)) { Megjelenito.AddEventEsUjrarajzol(String.Format("{0} a kihívó, és most már elvileg van aduval megegyező szín a kezében!\n", kihivo.Nev), Adu); Thread.Sleep(750); return; } else { Adu = Oszto.OsztEgyKartyat(); String ujAduLettKerve = String.Format("{0} a kihívó, nincs adott szín! Új adu :{1} \n", kihivo.Nev, Adu.KartyaNeve()); Megjelenito.AddEvent(ujAduLettKerve); } } }