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.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
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.
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ů.
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.