Had

C# .NET Základní konstrukce Zdrojákoviště Had

Had

Kopie klasické hry had v konzoli v C#.

Nepoužívám tam OOP, přišlo mi to na tak malý projekt příliš komplikované a zbytečné. Naopak jsem se snažil, aby byl zdrojový kód co nejkratší (nemyslím takové ty hacky jako 200 znaků na jeden řádek...) a zároveň přehledný. Prostě KISS (Keep It Short and Simple) :-)

Pokud budete mít nějaké připomínky, sem s nimi ;)

Ovládání: Šipky, Escape, Enter


Galerie

Hra byla vytvořena v roce 2016.

 

Stáhnout

Staženo 82x (43.49 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (2)

Hru pro vás napsal Ondřej Krsička
Avatar
Programuju v novém JS, C# a Pythonu. Účastním se také KSP a KSI. Jinak dělám Judo.

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 



 

 

Komentáře

Avatar
David Novák
Tým ITnetwork
Avatar
David Novák:

Chtělo by na tom ještě zapracovat.. ;)

  1. Máš méně vertikálních políček - rychlost pohybu hada je tedy nekonzistentní
  2. Po 19 políčkách jsem nedostal nové..
  3. Pohyb je špatně řešený - podržením směrové šipky se zablokuje na daný počet kroků
  4. Při podržení šipky např. doprava se ti had smrskne postupně na velikost 1 políčka
Odpovědět  +1 5. června 10:29
Chyba je mezi klávesnicí a židlí.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na David Novák
Ondřej Krsička:

1. To je tím, že šířka políčka je menší jak výška - nastavení fontu v konzoli.

Na zbytek se podívám :)

 
Odpovědět 5. června 13:03
Avatar
David Jančík [sczdavos]:

Si pamatuji, že jsem se jednou na střední o volné hodině nudil, tak jsem si naprogramoval Hada a po zbytek volné hodiny jsem ho hrál :D

Odpovědět  ±0 5. června 14:53
Čím více času dostaneš, tím méně ho máš.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na David Novák
Ondřej Krsička:

Nevíš, čím by mohl být bod 3 a 4? Nejvíc mi vadí bod 3. Řekl bych, že to bude něco s Thread.Sleep(), ale nejsem si jistý.
PS: Pokud nemáš čas, kašli na to... :D

 
Odpovědět 6. června 17:35
Avatar
František Koutenský:
if (Console.KeyAvailable)
{
    ConsoleKey vstup = Console.ReadKey().Key;
    if (vstup != Smer)
    {
        if (vstup == ConsoleKey.UpArrow ||
            vstup == ConsoleKey.DownArrow ||
            vstup == ConsoleKey.LeftArrow ||
            vstup == ConsoleKey.RightArrow)
        {
            //Zajištění, že had se najednou nevydá doprotisměru ("nekousne se" do článku za hlavou)
            if (!(vstup == ConsoleKey.UpArrow && Smer == ConsoleKey.DownArrow) &&
                !(vstup == ConsoleKey.DownArrow && Smer == ConsoleKey.UpArrow) &&
                !(vstup == ConsoleKey.LeftArrow && Smer == ConsoleKey.RightArrow) &&
                !(vstup == ConsoleKey.RightArrow && Smer == ConsoleKey.LeftArrow))
            {
                Smer = vstup;
            }
        }
    }
    continue;
}

Předtím šlo změnit směr (stisknout klávesu) pouze jednou za celý cyklus while, když jsi naklikal více znaků, nebo podržel nějaký znak, tak to funkce Console.KeyAva­ilable zaznamenala na určitý počet cyklů "dopředu".
Řeší to příkaz continue, který vrací na začátek cyklu while.
Smrsknutí nastává pouze při pohybu doprava a je to dáno tím, že stisknuté znaky se vypisují za kurzor a tím "překreslují" tělo hada.

Také jsem tu asi před týdnem publikoval konzolového hada a mám tam stejný problém, takže to též musím ještě přepsat. :D

 
Odpovědět 8. června 12:33
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na František Koutenský
Ondřej Krsička:

a to spraví jen to continue? Tak to by mě nenapadlo :D

 
Odpovědět  +1 8. června 17:00
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 6 zpráv z 6.