Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Thomson
Člen
Avatar
Thomson:2.3.2018 15:33

Dobrý den, dělám do školy projekt pexeso v konzoli a nevím si rady jak pexeso udělat pro dva (popř. více) hráčů.

class Program
{
static int[,] pexeso = new int[6, 6];

static int souradnice_kar­ty1_x, souradnice_kar­ty1_y, souradnice_kar­ty2_x, souradnice_kar­ty2_y, hodnota_karta1, hodnota_karta2, body, souradnice_karty;
static string prvni_hrac, druhy_hrac;
static void Main(string[] args)
{
Napln();
while (true)
{
Console.Write­Line(Vypis_skry­te());
Console.Write­Line("");
Console.Write­Line(vypis(pe­xeso));
Console.Write­Line("");
Otoc_karty();
Console.Write­Line("");
Console.Write­Line("Vaše první karta na souřadnicích: " + (souradnice_kar­ty1_y + 1) + "y " + "a " + (souradnice_kar­ty1_x + 1) + "x " + "má hodnotu: " + hodnota_karta1);
Console.Write­Line("Vaše druhá karta na souřadnicích: " + (souradnice_kar­ty2_y + 1) + "y " + "a " + (souradnice_kar­ty2_x + 1) + "x " + "má hodnotu: " + hodnota_karta2);
Console.Write­Line("");
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.GetUpper­Bound(0); i++)
{
for (int j = 0; j <= _pole.GetUpper­Bound(1); j++)
{
vypis += _pole[i, j] + " ";
}
vypis += "\n";
}
return vypis;
}

static void Otoc_karty()
{
do
{
souradnice_kar­ty1_y = Zadej_kartu("1 karty: y");
souradnice_kar­ty1_x = Zadej_kartu("1 karty: x");
hodnota_karta1 = pexeso[sourad­nice_karty1_y, souradnice_kar­ty1_x];
do
{
souradnice_kar­ty2_y = Zadej_kartu("2 karty: y");
souradnice_kar­ty2_x = Zadej_kartu("2 karty: x");
}
while (souradnice_kar­ty1_x == souradnice_kar­ty2_x & souradnice_kar­ty1_y == souradnice_kar­ty2_y);
hodnota_karta2 = pexeso[sourad­nice_karty2_y, souradnice_kar­ty2_x];
if (pexeso[sourad­nice_karty1_y, souradnice_kar­ty1_x] == 0)
{
if (pexeso[sourad­nice_karty2_y, souradnice_kar­ty2_x] == 0)
{
Console.Write­Line("Karty už jsou vybrány");
Console.WriteLine(" ");
}
Console.Write­Line("Zadej znova");
Console.WriteLine(" ");
Console.WriteLine(" ");
}

}
while (pexeso[sourad­nice_karty1_y, souradnice_kar­ty1_x] == 0 & pexeso[sourad­nice_karty2_y, souradnice_kar­ty2_x] == 0);
}

private static int Zadej_kartu(string _karta)
{
do
{
Console.Write­Line("Zadej souřadnici " + _karta);
while (!int.TryParse(Con­sole.ReadLine(), out souradnice_karty))
{
Console.Write­Line("Neplatný znak, zadejte prosím znovu:");
}
Console.Write­Line("");
}
while (!(souradnice_karty > 0 & souradnice_karty <= 6));
souradnice_karty--;
return souradnice_karty;
}

static void Porovnej()
{
if (hodnota_karta1 == hodnota_karta2)
{
body += 1;
pexeso[sourad­nice_karty1_y, souradnice_kar­ty1_x] = 0;
pexeso[sourad­nice_karty2_y, souradnice_kar­ty2_x] = 0;

Console.Write­Line("Máte " + body + " bodů/y");
Console.Write­Line("");
}
else
{
Console.Write­Line("Vaše karty nejsou stejné");
Console.Write­Line("");
Console.Write­Line("Máte " + body + " bodů/y");
Console.WriteLine(" ");
}
}

static string Konec()
{
string konec = "Konec hry";
while (body == 18)
{
Environment.E­xit(0);
}
return konec;
}

static string Vypis_skryte()
{
string vysledek2 = "";
for (int i = 0; i <= pexeso.GetUpper­Bound(0); i++)
{
for (int j = 0; j <= pexeso.GetUpper­Bound(1); j++)
{
if (pexeso[i,j] == 0)
{
vysledek2 += " o ";
}

else
{
vysledek2 += " x ";
}
}
vysledek2 += "\n";
}
return vysledek2;
}

}

 
Odpovědět
2.3.2018 15:33
Avatar
xpoproci
Člen
Avatar
xpoproci:2.3.2018 15:49

Mohol by si to prosím hodiť do code bloku, takto sa to nedá čítať.

Nahoru Odpovědět
2.3.2018 15:49
Motto
Avatar
Thomson
Člen
Avatar
Thomson:2.3.2018 16:04
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;
        }

    }
 
Nahoru Odpovědět
2.3.2018 16:04
Avatar
xpoproci
Člen
Avatar
xpoproci:2.3.2018 17:01

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.

Nahoru Odpovědět
2.3.2018 17:01
Motto
Avatar
Thomson
Člen
Avatar
Odpovídá na xpoproci
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.

 
Nahoru Odpovědět
2.3.2018 17:45
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Thomson
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/neo­točených karet, nikoli počtu získaných bodů.

Nahoru Odpovědět
2.3.2018 19:05
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Thomson
Člen
Avatar
Odpovídá na DarkCoder
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.

 
Nahoru Odpovědět
2.3.2018 19:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.