Diskuze: pexeso dva hráči
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


class Program
    {
        static int[,] pexeso = new int[6, 6];
        static int souradnice_karty_1_x, souradnice_karty_1_y, souradnice_karty_2_x, souradnice_karty_2_y, hodnota_karta_1, hodnota_karta_2, body, souradnice_karty;
        static string prvni_hrac, druhy_hrac;
        static void Main(string[] args)
        {
            Napln();
            while (true)
            {
                Console.WriteLine(Vypis_skryte());
                Console.WriteLine("");
                Console.WriteLine(vypis(pexeso));
                Console.WriteLine("");
                Otoc_karty();
                Console.WriteLine("");
                Console.WriteLine("Vaše první karta na souřadnicích: " + (souradnice_karty_1_y + 1) + "y " + "a " + (souradnice_karty_1_x + 1) + "x  " + "má hodnotu: " + hodnota_karta_1);
                Console.WriteLine("Vaše druhá karta na souřadnicích: " + (souradnice_karty_2_y + 1) + "y " + "a " + (souradnice_karty_2_x + 1) + "x  " + "má hodnotu: " + hodnota_karta_2);
                Console.WriteLine("");
                Porovnej();
                Konec();
            }
        }
        static void Napln()
        {
            pexeso[0, 0] = 16;
            pexeso[0, 1] = 7;
            pexeso[0, 2] = 17;
            pexeso[0, 3] = 2;
            pexeso[0, 4] = 18;
            pexeso[0, 5] = 9;
            pexeso[1, 0] = 15;
            pexeso[1, 1] = 8;
            pexeso[1, 2] = 3;
            pexeso[1, 3] = 6;
            pexeso[1, 4] = 16;
            pexeso[1, 5] = 11;
            pexeso[2, 0] = 2;
            pexeso[2, 1] = 6;
            pexeso[2, 2] = 4;
            pexeso[2, 3] = 8;
            pexeso[2, 4] = 12;
            pexeso[2, 5] = 14;
            pexeso[3, 0] = 3;
            pexeso[3, 1] = 10;
            pexeso[3, 2] = 1;
            pexeso[3, 3] = 5;
            pexeso[3, 4] = 15;
            pexeso[3, 5] = 11;
            pexeso[4, 0] = 18;
            pexeso[4, 1] = 13;
            pexeso[4, 2] = 1;
            pexeso[4, 3] = 10;
            pexeso[4, 4] = 14;
            pexeso[4, 5] = 4;
            pexeso[5, 0] = 12;
            pexeso[5, 1] = 5;
            pexeso[5, 2] = 9;
            pexeso[5, 3] = 17;
            pexeso[5, 4] = 13;
            pexeso[5, 5] = 7;
        }
        static string vypis(int[,] _pole)
        {
            string vypis = "";
            for (int i = 0; i <= _pole.GetUpperBound(0); i++)
            {
                for (int j = 0; j <= _pole.GetUpperBound(1); j++)
                {
                    vypis += _pole[i, j] + "  ";
                }
                vypis += "\n";
            }
            return vypis;
        }
        static void Otoc_karty()
        {
            do
            {
                souradnice_karty_1_y = Zadej_kartu("1 karty: y");
                souradnice_karty_1_x = Zadej_kartu("1 karty: x");
                hodnota_karta_1 = pexeso[souradnice_karty_1_y, souradnice_karty_1_x];
                do
                {
                    souradnice_karty_2_y = Zadej_kartu("2 karty: y");
                    souradnice_karty_2_x = Zadej_kartu("2 karty: x");
                }
                while (souradnice_karty_1_x == souradnice_karty_2_x & souradnice_karty_1_y == souradnice_karty_2_y);
                hodnota_karta_2 = pexeso[souradnice_karty_2_y, souradnice_karty_2_x];
                if (pexeso[souradnice_karty_1_y, souradnice_karty_1_x] == 0)
                {
                    if (pexeso[souradnice_karty_2_y, souradnice_karty_2_x] == 0)
                    {
                        Console.WriteLine("Karty už jsou vybrány");
                        Console.WriteLine(" ");
                    }
                    Console.WriteLine("Zadej znova");
                    Console.WriteLine(" ");
                    Console.WriteLine(" ");
                }
            }
            while (pexeso[souradnice_karty_1_y, souradnice_karty_1_x] == 0 & pexeso[souradnice_karty_2_y, souradnice_karty_2_x] == 0);
        }
        private static int Zadej_kartu(string _karta)
        {
            do
            {
                Console.WriteLine("Zadej souřadnici " + _karta);
                while (!int.TryParse(Console.ReadLine(), out souradnice_karty))
                {
                    Console.WriteLine("Neplatný znak, zadejte prosím znovu:");
                }
                Console.WriteLine("");
            }
            while (!(souradnice_karty > 0 & souradnice_karty <= 6));
            souradnice_karty--;
            return souradnice_karty;
        }
        static void Porovnej()
        {
            if (hodnota_karta_1 == hodnota_karta_2)
            {
                body += 1;
                pexeso[souradnice_karty_1_y, souradnice_karty_1_x] = 0;
                pexeso[souradnice_karty_2_y, souradnice_karty_2_x] = 0;
                Console.WriteLine("Máte " + body + " bodů/y");
                Console.WriteLine("");
            }
            else
            {
                Console.WriteLine("Vaše karty nejsou stejné");
                Console.WriteLine("");
                Console.WriteLine("Máte " + body + " bodů/y");
                Console.WriteLine(" ");
            }
        }
        static string Konec()
        {
            string konec = "Konec hry";
            while (body == 18)
            {
                Environment.Exit(0);
            }
            return konec;
        }
        static string Vypis_skryte()
        {
            string vysledek_2 = "";
            for (int i = 0; i <= pexeso.GetUpperBound(0); i++)
            {
                for (int j = 0; j <= pexeso.GetUpperBound(1); j++)
                {
                    if (pexeso[i,j] == 0)
                    {
                        vysledek_2 += " o ";
                    }
                    else
                    {
                        vysledek_2 +=  " x ";
                    }
                }
                vysledek_2 += "\n";
            }
            return vysledek_2;
        }
    }uf, ako tak pozerám tak napísať to bez objektov by bol celkom oriešok. Pozri si OOP v C# a po pár lekciách zistíš, že sa tvoje pexeso dá urobiť omnoho jednoduchšie a elegantnejšie. a len taká malá rada
static string Konec()
        {
            string konec = "Konec hry";
            while (body == 18)
            {
                Environment.Exit(0);
            }
            return konec;
        }použi tu skôr if namiesto whilu, pretože keby si tam nemal Enviroment.Exit(0) tak by sa ti to zacyklilo.
Thomson:2.3.2018 17:45
Díky za radu. Mě je jasný že to de napsat jedno lépe ale je to "jenom" projekt do školy. A jinak se kouknu.
DarkCoder:2.3.2018 19:05
Mě je jasný že to de napsat jedno lépe ale je to "jenom" projekt do školy.
I projekt do školy je projekt jako každý jiný. A představa o povědomí, že to jde napsat lépe a neudělat to tak, je naprosto nemyslitelná. Myslíš, že je správné k tomu přistupovat s vědomím: "Takto to bude stačit.." ? Budeš-li se pokaždé snažit o lepší řešení, nejen že si vštípíš správné návyky, ale ještě ke všemu tomu budou tvé další a důležitější projekty mnohem efektivnější a ty si pak můžeš s klidným pocitem říci "Udělal jsem dobrou práci!"
Jinač ukončení hry prováděj na základě množství otočených/neotočených karet, nikoli počtu získaných bodů.
Thomson:2.3.2018 19:54
Tak já jsem napsal že se kouknu. Takže se to pokusím ještě předělat, navíc tento projekt pak budu muset ještě předělat do Xamarinu. Ale jinak Díky.
Zobrazeno 7 zpráv z 7.
 
				

