namespace Megyes_Istvan_Beadando
public Jatek(KartyaPakli pakli, Jatekos[] jatekosok)
this.jatekosok = jatekosok;
private void KartyaOsztas()
for (int i = 0; i < jatekosok.Length; i++)
jatekosok[i].Lapok[j] = pakli.Pakli[index];
Console.SetWindowSize(160, 24);
Jatekos.OsztoSorsolas(jatekosok);
public void JatekKezdes()
if (Convert.ToInt32(pakli.Pakli[31].Szam) == 7)
pontok = Convert.ToInt32(pakli.Pakli[31].Szam);
pakli.Pakli[31].Kijatszott = true;
if ((int)pakli.Pakli[31].Szam == 7)
Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("A pakli legalsó lapja: {0} {1}[{2}]", pakli.Pakli[31].Szin, pakli.Pakli[31].Szam, 1); Console.ResetColor();
Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("A pakli legalsó lapja: {0} {1}[{2}]", pakli.Pakli[31].Szin, pakli.Pakli[31].Szam, (int)pakli.Pakli[31].Szam); Console.ResetColor();
while (!JatekVege(jatekosok[elozoJatekos],pakli))
if (jatekosok[aktivJatekos].Robot)
dobas = (int)jatekosok[aktivJatekos].Lapok[jatekosok[aktivJatekos].RobotDobas()].Szam;
dobas = (int)jatekosok[aktivJatekos].Lapok[jatekosok[aktivJatekos].JatekosDobas()].Szam;
if (jatekosok[aktivJatekos].Mentes==true)
Mentes(jatekosok, pontok);
jatekosok[aktivJatekos].Mentes = false;
elozoJatekos = aktivJatekos;
aktivJatekos = (aktivJatekos + 1) % jatekosok.Length;
Megjelenites.JatekTer(jatekosok, aktivJatekos, pontok, pakli);
if (Megjelenites.UjJatek())
private void Menu(Jatekos[] jatekosok)
Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Üdvözöllek {0}!", jatekosok[0].JatekosNev); Console.ResetColor();
Console.WriteLine("\nEzzel a programmal az '51' nevű magyar kártya játékkal tudsz játszani.\nKérlek válassz az alábbi menüpontok közül:\n");
Console.ForegroundColor = ConsoleColor.Magenta; Console.Write("\tJATEK: \t"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("Új játék kezdése\n");
Console.ForegroundColor = ConsoleColor.Magenta; Console.Write("\tSZABALY: \t"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("A játék szabályainak leírás\n");
Console.ForegroundColor = ConsoleColor.Magenta; Console.Write("\tBETOLT: \t"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("Korábbi mentés játék betöltése\n");
Console.ForegroundColor = ConsoleColor.Magenta; Console.Write("\tKILEP: \t"); Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write("Kilépés a programból\n\n");
} while (s != "JATEK" && s != "SZABALY" && s != "BETOLT" && s != "KILEP");
Console.WriteLine("Viszlát!");
Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Korábbi mentések listája:\n"); Console.ResetColor();
FajlLista(Directory.GetCurrentDirectory());
Betoltes(pontok,elozoJatekos,aktivJatekos,jatekosok,pakli);
Console.SetWindowSize(180, 30);
Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("A játék menete\n"); Console.ResetColor();
Console.WriteLine("\tA játék minden mozzanata jobbra tartással folyik. A kártyacsomag megkeverése után mindenki 8, az osztó csak 7 lapot " +
"\nkap képükkel lefelé fordítva. Az osztó az utolsó lapot képével felfelé fordítva (nyitottan) helyezi az asztal közepére." +
"\nEz lesz a dobó halom első lapja. A játékot az osztótól jobbra ülő kezdi. Bemondja a dobó halom lapjának értékét és egy" +
"\ntetszése szerinti kártyát helyez nyitottan az asztalon lévő halom tetejére.Minden játékosnak be kell mondani a lapok" +
"\nösszes értékét is. (Pl. 2 pontos alsóra 8 pontos lapot teszünk, a dobó halom értéke így 10 pont lesz.) Jobbra haladva" +
"\na soron következő játékosok is így tehetnek le egy kártyát a kezükből. A lerakott lap és a dobó halom így kialakult " +
"\nértékét kötelező bemondani. Elveszíti a játékot és zálogot ad, aki lapjának lerakásával eléri vagy meghaladja az 51 pontot." +
"\nMinden körben le kell tenni egy kártyát, kimaradni - passzolni - nem lehet. Az osztó személye jobbra tartással változik." +
"\n\n\tHa a dobó halom meghaladta a 30 pontot, könnyebben tudunk előre számolni.Lehetőleg úgy kell lapot tenni, hogy az " +
"\nutánunk következő játékosokat rákényszerítsük az 51 pont elérésére. " + "Célszerű a végjátékhoz 8 pontos és -1 vagy 0 pontos lapot tartani.\n");
Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("A lapok értéke\n"); Console.ResetColor();
foreach (Szam szam in Enum.GetValues(typeof(Szam)))
Console.WriteLine("{0} [{1}]", szam, 1);
Console.WriteLine("{0} [{1}]", szam, (int)szam);
Console.ForegroundColor = ConsoleColor.DarkGray; Console.WriteLine("\nNyomj meg egy gombot, a játék kezdéséhez!"); Console.ResetColor();
Console.WriteLine("\nMáris kezdődik a játszma!");
private void UjraKezdes()
jatekosok[elozoJatekos].Feladas = false;
Jatek ujKor = new Jatek(pakli, jatekosok);
private void PakliReset(KartyaPakli pakli)
foreach (Kartya item in pakli.Pakli)
public void Mentes(Jatekos[] jatekosok, int pontok)
StreamWriter sw = new StreamWriter(DateTime.Now.ToString(@"yyyy-MM-dd_HH-mm-ss") + ".txt");
sw.WriteLine(aktivJatekos);
sw.WriteLine(elozoJatekos);
for (int i = 0; i < jatekosok.Length; i++)
sw.WriteLine(jatekosok[i].JatekosNev);
sw.WriteLine(jatekosok[i].Robot);
sw.WriteLine(jatekosok[i].Oszto);
sw.WriteLine(jatekosok[i].KivalasztottLap);
for (int i = 0; i < jatekosok.Length; i++)
for (int j = 0; j < jatekosok[i].Lapok.Length; j++)
sw.WriteLine(jatekosok[i].Lapok[j].Szin);
sw.WriteLine(jatekosok[i].Lapok[j].Szam);
sw.WriteLine(jatekosok[i].Lapok[j].Kijatszott);
sw.WriteLine(Convert.ToString(pakli.Pakli[31].Szin));
sw.WriteLine(Convert.ToString(pakli.Pakli[31].Szam));
public static void FajlLista(string debug)
string[] eleresiUtvonal = Directory.GetFiles(debug);
if (eleresiUtvonal.Length>0)
for (int i = 0; i < eleresiUtvonal.Length; i++)
if (eleresiUtvonal[i].Contains("2018"))
lenyeg = eleresiUtvonal[i].IndexOf(@"Debug\");
Console.WriteLine("{0}: {1}", i + 1, eleresiUtvonal[i].Substring(lenyeg + 6));
Console.WriteLine("Nem található korábbi mentés!");
private static string[] FajlokListazasa(string mappa)
string[] eleresiUtvonal = Directory.GetFiles(mappa);
if (eleresiUtvonal.Length > 0)
for (int i = 0; i < eleresiUtvonal.Length; i++)
if (eleresiUtvonal[i].Contains("2018"))
lenyeg = eleresiUtvonal[i].IndexOf(@"Debug\");
mentes += eleresiUtvonal[i].Substring(lenyeg + 6) + ";" ;
string[] valaszthatoLista = mentes.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
public static string SzamBekeres(string[] lista)
Console.WriteLine("\nKérlek add meg a betölteni kívánt mentés számát:");
szam = Convert.ToInt32(Console.ReadLine());
} while (char.IsNumber((char)szam)&&szam<lista.Length);
private static void Betoltes(int pontok, int elozoJatekos, int aktivJatekos, Jatekos[] jatekosok, KartyaPakli pakli)
string[] fajlLista = FajlokListazasa(Directory.GetCurrentDirectory());
string mentes = SzamBekeres(fajlLista);
jatekosok[elozoJatekos].Feladas = false;
for (int i = 0; i < jatekosok.Length; i++)
jatekosok[i].Oszto = false;
string[] adatok = MentesBeolvas(mentes);
pontok = Convert.ToInt32(adatok[0]);
aktivJatekos = Convert.ToInt32(adatok[1]);
elozoJatekos = Convert.ToInt32(adatok[2]);
jatekosok[0].JatekosNev = adatok[3];
jatekosok[0].Robot = Convert.ToBoolean(adatok[4]);
jatekosok[0].Oszto = Convert.ToBoolean(adatok[5]);
jatekosok[0].KivalasztottLap = Convert.ToInt32(adatok[6]);
jatekosok[1].JatekosNev = adatok[7];
jatekosok[1].Robot = Convert.ToBoolean(adatok[8]);
jatekosok[1].Oszto = Convert.ToBoolean(adatok[9]);
jatekosok[1].KivalasztottLap = Convert.ToInt32(adatok[10]);
jatekosok[2].JatekosNev = adatok[11];
jatekosok[2].Robot = Convert.ToBoolean(adatok[12]);
jatekosok[2].Oszto = Convert.ToBoolean(adatok[13]);
jatekosok[2].KivalasztottLap = Convert.ToInt32(adatok[14]);
jatekosok[3].JatekosNev = adatok[15];
jatekosok[3].Robot = Convert.ToBoolean(adatok[16]);
jatekosok[3].Oszto = Convert.ToBoolean(adatok[17]);
jatekosok[3].KivalasztottLap = Convert.ToInt32(adatok[18]);
for (int i = 0; i < 32; i++)
Szin szin = (Szin)Enum.Parse(typeof(Szin),adatok[19+i*3]);
pakli.Pakli[i].Szin = szin;
Szam szam = (Szam)Enum.Parse(typeof(Szam), adatok[20 + i*3]);
pakli.Pakli[i].Szam = szam;
pakli.Pakli[i].Kijatszott = Convert.ToBoolean(adatok[21 + 1*3]);
static string[] MentesBeolvas(string fajl)
StreamReader sr = new StreamReader(fajl);
string s = sr.ReadToEnd();
string[] sorok = s.Split(new string[] { "\r\n" },
StringSplitOptions.RemoveEmptyEntries);
private bool JatekVege(Jatekos jatekos,KartyaPakli pakli)
if (pontok>=51 || jatekos.Feladas)
Megjelenites.JatekVege(jatekos,pontok);